diff --git a/HeatUp/src/de/heatup/images/25x25_black.png b/HeatUp/src/de/heatup/images/25x25_black.png new file mode 100644 index 0000000..4d22f35 Binary files /dev/null and b/HeatUp/src/de/heatup/images/25x25_black.png differ diff --git a/HeatUp/src/de/heatup/images/25x25_blue.png b/HeatUp/src/de/heatup/images/25x25_blue.png new file mode 100644 index 0000000..6bfa88c Binary files /dev/null and b/HeatUp/src/de/heatup/images/25x25_blue.png differ diff --git a/HeatUp/src/de/heatup/images/25x25_orange.png b/HeatUp/src/de/heatup/images/25x25_orange.png new file mode 100644 index 0000000..1ab0f03 Binary files /dev/null and b/HeatUp/src/de/heatup/images/25x25_orange.png differ diff --git a/HeatUp/src/de/heatup/images/25x25_red.png b/HeatUp/src/de/heatup/images/25x25_red.png new file mode 100644 index 0000000..4dc5d36 Binary files /dev/null and b/HeatUp/src/de/heatup/images/25x25_red.png differ diff --git a/HeatUp/src/de/heatup/images/bg_gray.png b/HeatUp/src/de/heatup/images/bg_gray.png new file mode 100644 index 0000000..bde7b11 Binary files /dev/null and b/HeatUp/src/de/heatup/images/bg_gray.png differ diff --git a/HeatUp/src/de/heatup/images/bg_orange.png b/HeatUp/src/de/heatup/images/bg_orange.png new file mode 100644 index 0000000..b3e8253 Binary files /dev/null and b/HeatUp/src/de/heatup/images/bg_orange.png differ diff --git a/HeatUp/src/de/heatup/objects/Gegner.java b/HeatUp/src/de/heatup/objects/Gegner.java new file mode 100644 index 0000000..58f8d9b --- /dev/null +++ b/HeatUp/src/de/heatup/objects/Gegner.java @@ -0,0 +1,127 @@ +package de.heatup.objects; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.util.Random; + +import javax.imageio.ImageIO; +import javax.swing.ImageIcon; +import javax.swing.JLabel; + +public class Gegner { + + private static int numberOfInstances; + private BufferedImage opponentImage; + private JLabel opponentLabel; + public Thread t; + public Gegner() throws IOException { + numberOfInstances++; + String fname; + if (numberOfInstances == 1 ) { + fname="images/red48.png"; + } else if (numberOfInstances == 2) { + fname="images/green48.png"; + } else { + fname="images/black48.png"; + } + opponentImage = ImageIO.read(new File(fname)); + opponentLabel = new JLabel(new ImageIcon(opponentImage)); + this.gegnerLogik(); + } + + public JLabel getLabel() { + return this.opponentLabel; + } + + public int getX() { + return this.opponentLabel.getLocation().x; + } + + public int getY() { + return this.opponentLabel.getLocation().y; + } + + private void setY(int y) { + this.opponentLabel.setLocation(this.opponentLabel.getLocation().x,y); + } + + private void setX(int x) { + this.opponentLabel.setLocation(x,this.opponentLabel.getLocation().y); + } + + /* + * Quick and dirty for testing... + */ + private void gegnerLogik() { + final Random rand = new Random(); + t = new Thread(new Runnable() { + @Override + public void run() { + int movex=0, movey=0; + int move = 0; + int dir; + while (true) { + if ( move == 0 ) { + dir = rand.nextInt(20)+1; +// System.out.println("Entscheidung: " + dir); + if ( dir < 5 || dir > 15) { + movex = rand.nextInt(800)+1; + move = 2; + if (movex > 100) { move = -2; } + movey = 0; +// System.out.println("X " + move + " " + movex); + + } else { + movey = rand.nextInt(600)+1; + move = 1; + if (movey > 100) { move = -1; } + movex = 0; +// System.out.println("X " + move + " " + movex); + } + } + + if ( getLabel().getX() <= 0 && move == -2 ) { + move = move * -1; + } + if ( getLabel().getX() >= 752 && move == 2 ) { + move = move * -1; + } + if ( getLabel().getY() <= 0 && move == -1 ) { + move = move * -1; + } + if ( getLabel().getY() >= 552 && move == 1 ) { + move = move * -1; + } + +// System.out.println("Move " + move + " Movex " + movex + " Movey " + movey); + + if ( move == -2 && movex >= 0) { + movex -= 4; + getLabel().setBounds(getLabel().getX()-8, getLabel().getY(), 48, 48); + } else if ( move == 2 && movex >= 0) { + movex -= 4; + getLabel().setBounds(getLabel().getX()+8, getLabel().getY(), 48, 48); + } else if (move == -1 && movey >= 0) { + movey -= 4; + getLabel().setBounds(getLabel().getX(), getLabel().getY()-8, 48, 48); + } else if (move == 1 && movey >= 0) { + movey -= 4; + getLabel().setBounds(getLabel().getX(), getLabel().getY()+8, 48, 48); + } else { + move = 0; + } + +// System.out.println("x: " + getX() + " y:" + getY()); + try { + Thread.sleep(10); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + }); + t.start(); + } + +} diff --git a/HeatUp/src/de/heatup/ui/GameInterface.java b/HeatUp/src/de/heatup/ui/GameInterface.java new file mode 100644 index 0000000..2296d99 --- /dev/null +++ b/HeatUp/src/de/heatup/ui/GameInterface.java @@ -0,0 +1,149 @@ +package de.heatup.ui; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.GridLayout; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.image.BufferedImage; +import java.io.IOException; + +import javax.swing.BorderFactory; +import javax.swing.JFrame; +import javax.swing.JPanel; + + + + +public class GameInterface extends JFrame { + + private JPanel outerPanel; + private JPanel statusPanel; + private JPanel gamePanel; + private JPanel actionPanel; + private BufferedImage image; + + + public GameInterface() throws IOException { + setTitle("HeatUP!"); + setDefaultCloseOperation(EXIT_ON_CLOSE); + setVisible(true); + setResizable(true); + + + createLayout(); + pack(); + } + + public void createLayout() throws IOException { + /* + * outerPanel ist der Rahmen in dem das Spielfeld und der statusFrame vereinigt werden + */ + outerPanel = new JPanel(); + outerPanel.setLayout(new BorderLayout()); + outerPanel.setBorder(BorderFactory.createTitledBorder("outerPanel")); + outerPanel.setVisible(true); + + /* + * statusPanel enthält Elemente wie Score, Zeit, Level etc. + */ + statusPanel = new JPanel(); + statusPanel.setLayout(new GridLayout(1,4)); + statusPanel.setPreferredSize(new Dimension(800,80)); + statusPanel.setBorder(BorderFactory.createTitledBorder("statusPanel")); + /* + * gamePanel enthält das Spielfeld + */ + gamePanel = new JPanel(); + gamePanel.setLayout(null); + gamePanel.setPreferredSize(new Dimension(800,600)); + gamePanel.setBorder(BorderFactory.createTitledBorder("gamePanel")); + /* + * actionPanel enthält Informationen zum durchführen einer Tätigkeit + */ + actionPanel = new JPanel(); + actionPanel.setLayout(new GridLayout(1,1)); + actionPanel.setBorder(BorderFactory.createTitledBorder("actionPanel")); + actionPanel.setPreferredSize(new Dimension(800,80)); + + /* + * Panel korrekt im Layout ausrichten. + */ + this.getContentPane().add(outerPanel); + outerPanel.add(statusPanel,BorderLayout.NORTH); + outerPanel.add(gamePanel,BorderLayout.CENTER); + outerPanel.add(actionPanel,BorderLayout.SOUTH); + + } + + + public static void main(String[] args) throws IOException, InterruptedException { + + GameInterface gameWindow = new GameInterface(); + + /* + * Gegner Routine instanzieren + */ + Gegner g1 = new Gegner(); + Gegner g2 = new Gegner(); + Gegner g3 = new Gegner(); + + Objekt o1 = new Objekt("images/objekt_dot144.png"); + o1.getLabel().setVisible(true); + + + Objekt s1 = new Objekt('0'); + Objekt s2 = new Objekt('0'); + Objekt s3 = new Objekt('0'); + Objekt s4 = new Objekt('0'); + Objekt s5 = new Objekt('0'); + Objekt s6 = new Objekt('0'); + + + /* + * Gegner auf Spielfläche hinzufügen und positionieren + */ + gameWindow.gamePanel.add(g1.getLabel()); + gameWindow.gamePanel.add(g2.getLabel()); + gameWindow.gamePanel.add(g3.getLabel()); + + gameWindow.gamePanel.add(o1.getLabel()); + + g1.getLabel().setBounds(300, 100, 20, 20); + g2.getLabel().setBounds(300, 200, 20, 20); + g3.getLabel().setBounds(300, 300, 20, 20); + + Objekt bg = new Objekt("images/bg_gray.png"); + bg.setPosition(0, 0); + + gameWindow.gamePanel.add(s1.getLabel()); + gameWindow.gamePanel.add(s2.getLabel()); + gameWindow.gamePanel.add(s3.getLabel()); + gameWindow.gamePanel.add(s4.getLabel()); + gameWindow.gamePanel.add(s5.getLabel()); + gameWindow.gamePanel.add(s6.getLabel()); + gameWindow.gamePanel.add(bg.getLabel()); + + bg.getLabel().repaint(); + + gameWindow.gamePanel.setComponentZOrder(o1.getLabel(), 0); + gameWindow.gamePanel.setComponentZOrder(bg.getLabel(), 5); + gameWindow.gamePanel.setComponentZOrder(g1.getLabel(), 1); + gameWindow.gamePanel.setComponentZOrder(g2.getLabel(), 1); + gameWindow.gamePanel.setComponentZOrder(g3.getLabel(), 1); + gameWindow.gamePanel.setComponentZOrder(s1.getLabel(), 2); + gameWindow.gamePanel.setComponentZOrder(s2.getLabel(), 2); + gameWindow.gamePanel.setComponentZOrder(s3.getLabel(), 2); + gameWindow.gamePanel.setComponentZOrder(s4.getLabel(), 2); + gameWindow.gamePanel.setComponentZOrder(s5.getLabel(), 2); + gameWindow.gamePanel.setComponentZOrder(s6.getLabel(), 2); + + s1.setPosition(0, 0); + s2.setPosition(25, 0); + s3.setPosition(50, 0); + s4.setPosition(75, 0); + + + + } + +}