Gèrer multi keyEvents avec Java
walidovich_85
Messages postés
608
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je suis un débutant en Java que j'aime beaucoup. Je suis entrain de réaliser un jeu de ping pong, où je me suis bloqué au niveau des mouvements des raquettes.
l'appuie sur "a" monte la raquette_1 en haut et l'appuie sur "q" la descend en bas. De même "p" et "m" gère le mouvement de la raquette_2.
Mon problème c'est quand j'essaie de contrôler les 2 raquettes au même temps, les fonctions keyPressed et keyReleased ne se lance pas comme prévue.
Pour simplifier mon code, j'ai simulé le mouvement par affichage de texte représentant les boutons appuyés.
Je remercie tous les internautes d'avance pour leurs aides.
Je suis un débutant en Java que j'aime beaucoup. Je suis entrain de réaliser un jeu de ping pong, où je me suis bloqué au niveau des mouvements des raquettes.
l'appuie sur "a" monte la raquette_1 en haut et l'appuie sur "q" la descend en bas. De même "p" et "m" gère le mouvement de la raquette_2.
Mon problème c'est quand j'essaie de contrôler les 2 raquettes au même temps, les fonctions keyPressed et keyReleased ne se lance pas comme prévue.
Pour simplifier mon code, j'ai simulé le mouvement par affichage de texte représentant les boutons appuyés.
import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JPanel; public class PingPong extends JFrame implements KeyListener { private JPanel mainPanel = new JPanel(); private boolean isAPressed; private boolean isQPressed; private boolean isPPressed; private boolean isMPressed; public PingPong() { this.setSize(400, 100); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); this.setContentPane(mainPanel); this.setFocusable(true); this.addKeyListener(this); } @Override public void keyPressed(KeyEvent e) { char key = e.getKeyChar(); switch (key) { case 'a': isAPressed = true; break; case 'q': isQPressed = true; break; case 'p': isPPressed = true; break; case 'm': isMPressed = true; break; } System.out.println("a is " + isAPressed + ", q is " + isQPressed + ", p is " + isPPressed + ", m is " + isMPressed); } @Override public void keyReleased(KeyEvent e) { char key = e.getKeyChar(); switch (key) { case 'a': isAPressed = false; break; case 'q': isQPressed = false; break; case 'p': isPPressed = false; break; case 'm': isMPressed = false; break; } System.out.println("a is " + isAPressed + ", q is " + isQPressed + ", p is " + isPPressed + ", m is " + isMPressed); } @Override public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } public static void main(String[] args) { new PingPong().setVisible(true); } }
Je remercie tous les internautes d'avance pour leurs aides.
A voir également:
- Gèrer multi keyEvents avec Java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
2 réponses
Bonsoir !
J'ai essayé ton code, je ne comprends pas le problème, quand j'appuie sur une touche la valeur passe à true, si je la relâche elle repasse à false, qu'est-ce qui ne va pas ?
J'ai essayé ton code, je ne comprends pas le problème, quand j'appuie sur une touche la valeur passe à true, si je la relâche elle repasse à false, qu'est-ce qui ne va pas ?
Il y a des questions similaires sur Internet mais je n'ai pas trouvé de solutions fiables, désolé.
(Si quelqu'un en a une, je suis aussi preneur)