Ich versuche, ein Spiel in Java zu machen und dies ist mein erstes Mal mit Multithreading (na ja, von Musik gleichzeitig über die Clip-Klasse.) Ich habe eine Canvas-Klasse, die JPanel erweitert, aber innerhalb die Canvas-Klasse ich habe auch einen KeyListener Eingang zu nehmen, hier gezeigt:Concurrent Methoden über Multithreading
private class myKeyListener implements KeyListener
{
public void keyPressed(KeyEvent keyEvent)
{
if(keyEvent.getKeyCode() == KeyEvent.VK_ESCAPE){System.exit (0);}
Thread thread3 = new Thread()
{
public void run() {
if(keyEvent.getKeyCode() == KeyEvent.VK_RIGHT){moveX(5, player1);}
if(keyEvent.getKeyCode() == KeyEvent.VK_LEFT){moveX(-5, player1);}
if(keyEvent.getKeyCode() == KeyEvent.VK_UP){moveY(-5, player1);}
if(keyEvent.getKeyCode() == KeyEvent.VK_DOWN){moveY (5, player1);}
}
};
Thread thread4 = new Thread()
{
public void run() {
if(keyEvent.getKeyCode() == KeyEvent.VK_D){moveX(5, player2);}
if(keyEvent.getKeyCode() == KeyEvent.VK_A){moveX(-5, player2);}
if(keyEvent.getKeyCode() == KeyEvent.VK_W){moveY(-5, player2);}
if(keyEvent.getKeyCode() == KeyEvent.VK_S){ moveY(5, player2);}
}
};
Thread thread5 = new Thread()
{
public void run() {
repaint();
}
};
thread3.start();
thread4.start();
thread5.start();
try{
thread3.join();
thread4.join();
thread5.join();
}
catch (Exception e){System.out.println(e);}
repaint();
}
public void keyReleased(KeyEvent keyEvent)
{
}
public void keyTyped(KeyEvent keyEvent)
{
}
}
Mein Ziel ist es zu haben, so dass man beide Spieler bewegen können gleichzeitig auf der Leinwand (die Rechtecke sind). Gegenwärtig kann man sie nur einzeln bewegen, aber niemals beide gleichzeitig. Dies ist mein erstes Mal mit Multithreading, also entschuldige ich mich im Voraus, wenn ich einen Anfängerfehler mache.
Ich habe nicht genau verstanden, was Sie tun möchten. Sie können nicht beide Spieler gleichzeitig mit diesem Code bewegen, da Sie nicht zwei Tasten gleichzeitig drücken können. Bei jedem Drücken einer Taste wird die Methode keyPressed() einmal aufgerufen. – Daniel
Meinst du zwei Leute, die die gleiche Tastatur benutzen, wobei jeder einen Spieler steuert? – Daniel
@Daniel Ja, tat ich. So wird zum Beispiel auf derselben Tastatur eine Person die Pfeiltasten verwenden, um den Rectangle player1 zu steuern, und die andere Person wird WASD verwenden, um das Rectangle zu steuern. Player2 – ADC2000