mirror of
https://github.com/jokerx3/HeatUp
synced 2026-07-27 10:19:46 +02:00
Anpassungen an GameLoop und Keybindings
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -161,9 +166,8 @@ public class GameLoopD extends JFrame implements Runnable {
|
||||
long timer = System.currentTimeMillis();
|
||||
|
||||
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)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
public class KeyBindings {
|
||||
private boolean left=false;
|
||||
private boolean right=false;
|
||||
private boolean up=false;
|
||||
private boolean down=false;
|
||||
|
||||
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;
|
||||
@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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
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;
|
||||
public boolean isDown() {
|
||||
return down;
|
||||
}
|
||||
}
|
||||
@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 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();
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user