diff --git a/HeatUp/src/de/heatup/resources/images/little_blue_guy_verysmall.png b/HeatUp/src/de/heatup/resources/images/little_blue_guy_verysmall.png new file mode 100644 index 0000000..504317c Binary files /dev/null and b/HeatUp/src/de/heatup/resources/images/little_blue_guy_verysmall.png differ diff --git a/HeatUp/src/de/heatup/testing/GameLoop.java b/HeatUp/src/de/heatup/testing/GameLoop.java index c7d1ac9..8c0f95e 100644 --- a/HeatUp/src/de/heatup/testing/GameLoop.java +++ b/HeatUp/src/de/heatup/testing/GameLoop.java @@ -8,13 +8,13 @@ import de.heatup.objects.DynamicObject; import de.heatup.objects.StaticObject; import de.heatup.objects.logic; import de.heatup.ui.GameInterface; +import de.heatup.ui.KeyBindings; +import de.heatup.testing.Query; public class GameLoop { - + public static void startGameLoop() { - - DynamicObject dynO1 = new DynamicObject(); GameInterface.getGamePanel().add(dynO1); DynamicObject dynO2 = new DynamicObject(); @@ -24,6 +24,18 @@ public class GameLoop { DynamicObject dynO4 = new DynamicObject(); GameInterface.getGamePanel().add(dynO4); + Player player01 = new Player(); + Query.setPlayer(player01); + GameInterface.getGamePanel().add(player01); + player01.setBounds(25, 25, 200, 200); + + + // Keybindings as object so we can load different bindings depending on number of players. + KeyBindings kb = new KeyBindings(); + GameInterface.getGamePanel().setFocusable(true); + kb.setKeyBindings(); + + //dynO3.setRescale(1.5,3.5); // Config.setGamePanelWidth(900); @@ -42,5 +54,5 @@ public class GameLoop { logic.startMovement(dynO3); //logic.startMovement(dynO4); - } + } } diff --git a/HeatUp/src/de/heatup/testing/Player.java b/HeatUp/src/de/heatup/testing/Player.java new file mode 100644 index 0000000..4dad786 --- /dev/null +++ b/HeatUp/src/de/heatup/testing/Player.java @@ -0,0 +1,57 @@ +package de.heatup.testing; + +import java.awt.BasicStroke; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.RenderingHints; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; +import java.util.Random; + +import javax.imageio.ImageIO; +import javax.swing.JComponent; + +import de.heatup.objects.ImageLoader; + +public class Player extends JComponent { + private static final long serialVersionUID = 1L; + //private Image image; + private BufferedImage bf1; + private Graphics2D g2d; + + private double rescaleFactorX = 0.0; + private double rescaleFactorY = 0.0; + + public void paintComponent(Graphics g) { + g2d = (Graphics2D)g; + //this.image = Toolkit.getDefaultToolkit().getImage("src/de/heatup/resources/images/little_green_guy.png"); + if ( bf1 == null ) { + loadBufferedImage(); + } + + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); + g2d.drawImage(bf1, 0, 0, this); + g2d.setStroke(new BasicStroke(8.0f)); + g2d.finalize(); + } + + private void loadBufferedImage() { + try { + this.bf1 = ImageIO.read(new File("src/de/heatup/resources/images/little_blue_guy_verysmall.png")); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void setImage(BufferedImage image) { + this.bf1 = image; + } + + public void setAutoBounds(int x, int y) { + this.setBounds(x, y, this.bf1.getWidth(), this.bf1.getHeight()); + } +} diff --git a/HeatUp/src/de/heatup/testing/Query.java b/HeatUp/src/de/heatup/testing/Query.java new file mode 100644 index 0000000..f230bab --- /dev/null +++ b/HeatUp/src/de/heatup/testing/Query.java @@ -0,0 +1,12 @@ +package de.heatup.testing; + +public class Query { + private static Player player1; + + public static void setPlayer(Player playerX) { + Query.player1 = playerX; + } + public static Player getPlayer() { + return Query.player1; + } +} diff --git a/HeatUp/src/de/heatup/ui/GameInterface.java b/HeatUp/src/de/heatup/ui/GameInterface.java index 847a71f..9137356 100644 --- a/HeatUp/src/de/heatup/ui/GameInterface.java +++ b/HeatUp/src/de/heatup/ui/GameInterface.java @@ -38,6 +38,7 @@ public class GameInterface extends JFrame { private static JPanel actionPanel; //private BufferedImage image; + public static void createGUI() { diff --git a/HeatUp/src/de/heatup/ui/KeyBindings.java b/HeatUp/src/de/heatup/ui/KeyBindings.java new file mode 100644 index 0000000..03a0db6 --- /dev/null +++ b/HeatUp/src/de/heatup/ui/KeyBindings.java @@ -0,0 +1,76 @@ +package de.heatup.ui; + +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.util.Random; + +import de.heatup.objects.ImageLoader; +import de.heatup.testing.Player; +import de.heatup.testing.Query; + +public class KeyBindings { + + public void setKeyBindings() { + KeyListener kl= new KeyAdapter() { + @Override public void keyPressed(KeyEvent evt) { + int keyCode = evt.getKeyCode(); + switch (keyCode) { + case KeyEvent.VK_LEFT: step('x',-1); break; + case KeyEvent.VK_RIGHT: step('x',1); break; + case KeyEvent.VK_UP: step('y',-1); break; + case KeyEvent.VK_DOWN: step('y',1); break; + } + //System.out.println(KeyEvent.getKeyText(evt.getKeyCode())); + } + }; + GameInterface.getGamePanel().addKeyListener(kl); + } + + private void step(final char d, final int i) { + final Player playerX = Query.getPlayer(); + final int stepx = 25; + final int stepy = 25; + + + Thread t = new Thread(new Runnable() { + @Override + public void run() { + int newx = playerX.getX(); + int newy = playerX.getY(); + int countx = stepx; + int county = stepy; + + while (true) { + + if (d == 'x' && i == -1 && countx != 0) { + countx--; + newx--; + } else if ( d == 'x' && i == 1 && countx != 0 ) { + countx--; + newx++; + } else if ( d == 'y' && i == -1 && county != 0 ) { + county--; + newy--; + } else if ( d == 'y' && i == 1 && county != 0 ) { + county--; + newy++; + } else { + break; + } + playerX.setAutoBounds(newx, newy); + + try { + Thread.sleep(20); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } + }); + t.start(); + + + } +}