Java:
package main;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;
public class GamePanel extends JPanel implements Runnable{
final int orginalTileSize = 16;
final int scale=3;
public final int tileSize = orginalTileSize * scale;
final int maxScreenCol = 16;
final int maxScreenRow = 12;
final int screenWidth = tileSize* maxScreenCol;
final int screenHeight = tileSize* maxScreenRow;
int FPS=60;
Thread gameThread;
KeyHandler keyH= new KeyHandler();
GamePanel(){
this.setPreferredSize(new Dimension(screenWidth,screenHeight));
this.setBackground(Color.black);
this.setDoubleBuffered(true);
this.addKeyListener(keyH);
this.setFocusable(true);
startGameThread();
}
int playerx = 100;
int playery = 100;
int speed =4 ;
public void startGameThread() {
gameThread=new Thread(this);
gameThread.start();
}
@Override
public void run() {
while (gameThread != null) {
update();
repaint();
}
}
public void update() {
if(keyH.upPressed == true) {
playery-=speed;
System.out.println("moin");
}else if(keyH.downPressed == true) {
playery+=speed;
}else if(keyH.rightPressed == true) {
playerx+=speed;
}else if(keyH.leftPressed == true) {
playerx-=speed;
}
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 =(Graphics2D) g;
g2.setColor(Color.white);
g2.fillRect(playerx, playery, tileSize, tileSize);
g2.dispose();
}
}
package main;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class KeyHandler implements KeyListener {
public boolean upPressed, downPressed, rightPressed, leftPressed;
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
int code =e.getKeyCode();
if(code==KeyEvent.VK_W) {
upPressed=true;
}
if(code==KeyEvent.VK_S) {
downPressed=true;
}
if(code==KeyEvent.VK_A) {
leftPressed=true;
}
if(code==KeyEvent.VK_D) {
rightPressed=true;
}
}
@Override
public void keyReleased(KeyEvent e) {
int code =e.getKeyCode();
if(code==KeyEvent.VK_W) {
upPressed=false;
}
if(code==KeyEvent.VK_S) {
downPressed=false;
}
if(code==KeyEvent.VK_A) {
leftPressed=false;
}
if(code==KeyEvent.VK_D) {
rightPressed=false;
}
}
}
package main;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
JFrame window = new JFrame();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setResizable(false);
window.setTitle("MMORPG");
window.setLocationRelativeTo(null);
window.setVisible(true);
GamePanel gp = new GamePanel();
window.add(gp);
window.pack();
}
}
hi ich versuche einfach ein rechteck auf den bildschirm mit w a s d zu bewegen. Das Ding ist es hat auch schonmal geklappt, aber jetzt halt gar nichtmehr. wenn ich starte erscheint das Rechteck aber ich kanns nicht bewegen oder verschwinden lassen (noch kein fps drinnen). ich such heute schon den ganzen Tag warum finde den Fehler aber ums verrecken nicht.
Danke schonma für eure Hilfe