From 880f558e52d6458db1e5bb21690b2771f3e17522 Mon Sep 17 00:00:00 2001 From: andreas Date: Thu, 6 Nov 2014 15:41:26 +0100 Subject: [PATCH] Anpassungen an GameLoop und Keybindings --- HeatUp/src/de/heatup/testing/GameLoop.java | 93 --------------- HeatUp/src/de/heatup/testing/GameLoopD.java | 31 +++-- HeatUp/src/de/heatup/testing/Player.java | 29 +++++ HeatUp/src/de/heatup/ui/KeyBindings.java | 123 +++++--------------- 4 files changed, 77 insertions(+), 199 deletions(-) delete mode 100644 HeatUp/src/de/heatup/testing/GameLoop.java diff --git a/HeatUp/src/de/heatup/testing/GameLoop.java b/HeatUp/src/de/heatup/testing/GameLoop.java deleted file mode 100644 index c99444b..0000000 --- a/HeatUp/src/de/heatup/testing/GameLoop.java +++ /dev/null @@ -1,93 +0,0 @@ -package de.heatup.testing; - -import java.awt.event.KeyEvent; - -import javax.swing.InputMap; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.KeyStroke; - -import de.heatup.cfg.Config; -import de.heatup.mapengine.MapEngine; -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(); - GameInterface.getGamePanel().add(dynO2); - DynamicObject dynO3 = new DynamicObject(); - GameInterface.getGamePanel().add(dynO3); - DynamicObject dynO4 = new DynamicObject(); - GameInterface.getGamePanel().add(dynO4); - - Player player01 = new Player(); - Query.setPlayer(player01); - GameInterface.getGamePanel().add(player01); - player01.setBounds(200, 200, 25, 25); - - // Keybindings as object so we can load different bindings depending on number of players. - final KeyBindings kb = new KeyBindings(); - kb.setKeyBindings(); - - GameInterface.getGamePanel().setFocusable(true); - - - //dynO3.setRescale(1.5,3.5); - -// Config.setGamePanelWidth(900); - MapEngine me = new MapEngine(1); - for (StaticObject currentStaticObject : me.getAllMapObjects()) { - GameInterface.getGamePanel().add(currentStaticObject); - } - - GameInterface.getGamePanel().setVisible(true); - - //GameInterface.getGamePanel().repaint(); - //GameInterface.getGamePanel().setComponentZOrder(dynO1, 1); - //GameInterface.getGamePanel().add(dynO1); - //logic.startMovement(dynO1); - //logic.startMovement(dynO2); - logic.startMovement(dynO3); - //logic.startMovement(dynO4); - - - - Thread t = new Thread(new Runnable() { - @Override - public void run() { - while (true) { -// System.out.println(kb.isDown() + " UD " + kb.isUp() + " - " + kb.isLeft() + " LR " + kb.isRight()); - - if ( kb.isLeft() ) { - KeyBindings.step('x',-1); - } else if ( kb.isRight()) { - KeyBindings.step('x',1); - } else if ( kb.isUp()) { - KeyBindings.step('y',-1); - } else if ( kb.isDown()){ - KeyBindings.step('y',1); - } else { - - } - - try { - Thread.sleep(100); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } - }); - t.start(); - } -} diff --git a/HeatUp/src/de/heatup/testing/GameLoopD.java b/HeatUp/src/de/heatup/testing/GameLoopD.java index 6246f45..26b542d 100644 --- a/HeatUp/src/de/heatup/testing/GameLoopD.java +++ b/HeatUp/src/de/heatup/testing/GameLoopD.java @@ -3,6 +3,9 @@ package de.heatup.testing; 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.event.KeyListener; import javax.swing.JFrame; import javax.swing.JPanel; @@ -14,6 +17,7 @@ import de.heatup.objects.logic; import de.heatup.ui.GameInterface; import de.heatup.ui.KeyBindings; + public class GameLoopD extends JFrame implements Runnable { private static final long serialVersionUID = 1L; @@ -28,6 +32,9 @@ public class GameLoopD extends JFrame implements Runnable { private static JPanel gamePanel; private static JPanel actionPanel; + public static Player player01; + public static KeyBindings kb; + DynamicObject dynO3; public static void main(String[] args) { @@ -81,17 +88,15 @@ public class GameLoopD extends JFrame implements Runnable { DynamicObject dynO4 = new DynamicObject(); gamePanel.add(dynO4); - Player player01 = new Player(); + player01 = new Player(); Query.setPlayer(player01); gamePanel.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(); + gamePanel.setFocusable(true); -// kb.setKeyBindings(); + kb = new KeyBindings(); + gamePanel.addKeyListener(kb); //dynO3.setRescale(1.5,3.5); @@ -160,10 +165,9 @@ public class GameLoopD extends JFrame implements Runnable { int frames = 0; long timer = System.currentTimeMillis(); - while (running) { - + while (running) { long now = System.nanoTime(); - delta += (lastTime - now) / ns; + delta += (now-lastTime) / ns; lastTime = now; if (delta >= 1) { tick(); @@ -185,6 +189,15 @@ public class GameLoopD extends JFrame implements Runnable { } // alles was geupdatet werden muss hier rein private void tick() { + if (kb.isRight()) { + player01.step('x', 1); + } else if (kb.isLeft()) { + player01.step('x', -1); + } else if (kb.isUp()) { + player01.step('y', -1); + } else if (kb.isDown()) { + player01.step('y', 1); + } } // alles was animiert wird hier rein (paints) diff --git a/HeatUp/src/de/heatup/testing/Player.java b/HeatUp/src/de/heatup/testing/Player.java index 4dad786..e0a7dd9 100644 --- a/HeatUp/src/de/heatup/testing/Player.java +++ b/HeatUp/src/de/heatup/testing/Player.java @@ -54,4 +54,33 @@ public class Player extends JComponent { public void setAutoBounds(int x, int y) { this.setBounds(x, y, this.bf1.getWidth(), this.bf1.getHeight()); } + + public void step(final char d, final int i) { + final int stepx = 25; + final int stepy = 25; + + int newx = this.getX(); + int newy = this.getY(); + int countx = stepx; + int county = stepy; + + while (true) { + if (d == 'x' && i == -1 && countx != 0) { + countx=countx-1; + newx=newx-1; + } else if ( d == 'x' && i == 1 && countx != 0 ) { + countx=countx-1; + newx=newx+1; + } else if ( d == 'y' && i == -1 && county != 0 ) { + county=county-1; + newy=newy-1; + } else if ( d == 'y' && i == 1 && county != 0 ) { + county=county-1; + newy=newy+1; + } else { + break; + } + this.setAutoBounds(newx, newy); + } + } } diff --git a/HeatUp/src/de/heatup/ui/KeyBindings.java b/HeatUp/src/de/heatup/ui/KeyBindings.java index 41a5063..4f9efff 100644 --- a/HeatUp/src/de/heatup/ui/KeyBindings.java +++ b/HeatUp/src/de/heatup/ui/KeyBindings.java @@ -2,28 +2,32 @@ 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 extends KeyAdapter { + + private boolean left=false; + private boolean right=false; + private boolean up=false; + private boolean down=false; -public class KeyBindings { + @Override public void keyReleased(KeyEvent evt) { + int keyCode = evt.getKeyCode(); + switch (keyCode) { + case KeyEvent.VK_LEFT: left=false; break; + case KeyEvent.VK_RIGHT: right=false; break; + case KeyEvent.VK_UP: up=false; break; + case KeyEvent.VK_DOWN: down=false; break; + } + } - static boolean ignoreKeys = false; - static int counter; - final static Object obj = new Object(); - public static boolean left=false; - public static boolean right=false; - public static boolean up=false; - public static boolean down=false; - - - - - public boolean isDown() { - return down; + @Override public void keyPressed(KeyEvent evt) { + int keyCode = evt.getKeyCode(); + switch (keyCode) { + case KeyEvent.VK_LEFT: left=true; break; + case KeyEvent.VK_RIGHT: right=true; break; + case KeyEvent.VK_UP: up=true; break; + case KeyEvent.VK_DOWN: down=true; break; + } } public boolean isLeft() { @@ -38,82 +42,7 @@ public class KeyBindings { return up; } - public static void setKeyBindings() { - - KeyListener kl= new KeyAdapter() { - @Override public void keyPressed(KeyEvent evt) { - int keyCode = evt.getKeyCode(); - switch (keyCode) { - case KeyEvent.VK_LEFT: left=true; break; - case KeyEvent.VK_RIGHT: right=true; break; - case KeyEvent.VK_UP: up=true; break; - case KeyEvent.VK_DOWN: down=true; break; - } - } - @Override public void keyReleased(KeyEvent evt) { - int keyCode = evt.getKeyCode(); - switch (keyCode) { - case KeyEvent.VK_LEFT: left=false; break; - case KeyEvent.VK_RIGHT: right=false; break; - case KeyEvent.VK_UP: up=false; break; - case KeyEvent.VK_DOWN: down=false; break; - } - } - }; - GameInterface.getGamePanel().addKeyListener(kl); + public boolean isDown() { + return down; } - - public static void step(final char d, final int i) { - //if ( ! ignoreKeys ) { - ignoreKeys = true; - counter++; - final Player playerX = Query.getPlayer(); - final int stepx = 25; - final int stepy = 25; - - - -// Thread t = new Thread(new Runnable() { -// @Override -// public void run() { -// synchronized (obj) { - - int newx = playerX.getX(); - int newy = playerX.getY(); - int countx = stepx; - int county = stepy; - - while (true) { - if (d == 'x' && i == -1 && countx != 0) { - countx=countx-1; - newx=newx-1; - } else if ( d == 'x' && i == 1 && countx != 0 ) { - countx=countx-1; - newx=newx+1; - } else if ( d == 'y' && i == -1 && county != 0 ) { - county=county-1; - newy=newy-1; - } else if ( d == 'y' && i == 1 && county != 0 ) { - county=county-1; - newy=newy+1; - } else { - break; - } - playerX.setAutoBounds(newx, newy); - -// try { -// Thread.sleep(10); -// } catch (InterruptedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } - } - ignoreKeys = false; -// } -// } -// }); -// t.start(); - //} - } - } - +} \ No newline at end of file