Así que estoy tratando de código pong en el procesamiento y todo está funcionando bien, y puedo mover las paletas hacia arriba y abajo a la perfección, sin embargo, cuando se intenta mover dos paletas al mismo tiempo, que no se mueven / no lo hace que sea (que voy a hacer de este juego un jugador 2 para que 2 personas pueden jugar usando el mismo teclado pero con claves diferentes para las diferentes paletas).
Creo que esto es un problema con el uso de "clave" o "keyPressed", porque creo que no se puede detectar tanto o algo? pero me parece que no puede encontrar la manera de solucionar este o cualquier alternativa. (Tenga en cuenta que yo sepa cómo mover las paletas, es sólo que no se puede mover a los dos al mismo tiempo con las diferentes claves proporcionadas como im tratando de)
Tengo dos objetos hasta el momento, "Jugador 1" y "Player2"
tenga en cuenta "y" es la posición y que, o bien irá hacia arriba o hacia abajo dependiendo de la tecla presionada, y "velocidad" es sólo la velocidad que la paleta se moverá.
Esto está en Player1. Arriba = w, abajo = s
void movement() {
if(keyPressed) {
if(key == 'w' || key == 'W') {
y = y - speed; //goes up
} else if (key == 's' || key == 'S') {
y = y + speed; //goes down
}
}
}
Esto está en Player2. Arriba = tecla de flecha arriba, abajo = tecla de flecha hacia abajo
void movement() {
if (keyPressed) {
if(key == CODED) {
if(keyCode == UP) {
y = y - speed; //goes up
} else if (keyCode == DOWN) {
y = y + speed; //goes down
}
}
}
}
No hay mensajes de error, simplemente no le permiten mover las paletas 2, al mismo tiempo, que es algo que me gustaría hacer.
Tienes que utilizar las keyPressed
y keyReleased()
eventos. Los eventos se ejecutan una vez cuando se presiona o se suelta una tecla. Establecer un estado cuando se pulsa una tecla, respectivamente restablecer el estado cuando se suelta la tecla:
Boolean player1_up = false;
Boolean player1_down = false;
Boolean player2_up = false;
Boolean player2_down = false;
void keyPressed() {
if (keyCode == UP)
player1_up = true;
else if (keyCode == DOWN)
player1_up = true;
if (key == 'w' || key == 'W')
player2_up = true;
else if (key == 's' || key == 'S')
player2_down = true;
}
void keyReleasd() {
if (keyCode == UP)
player1_up = false;
else if (keyCode == DOWN)
player1_up = false;
if (key == 'w' || key == 'W')
player2_up = false;
else if (key == 's' || key == 'S')
player2_down = false;
}
Utilice los estados player1_up
, player1_down
, player2_up
y player2_down
en las movement
funciones.