Ecouteur d'évènement Java
Résolu/Fermé
Pulsar360
Messages postés
113
Date d'inscription
lundi 12 novembre 2012
Statut
Membre
Dernière intervention
29 août 2018
-
Modifié par Pulsar360 le 25/03/2013 à 23:48
Pulsar360 Messages postés 113 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 29 août 2018 - 4 avril 2013 à 22:45
Pulsar360 Messages postés 113 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 29 août 2018 - 4 avril 2013 à 22:45
A voir également:
- Ecouteur d'évènement Java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel 5360 ✓ - Forum Jeux vidéo
- Télécharger jeux java gameloft gratuit - Forum Mobile
5 réponses
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
Modifié par walidovich_85 le 26/03/2013 à 02:29
Modifié par walidovich_85 le 26/03/2013 à 02:29
Bonsoir,
pour détecter les touches du clavier, il faut absolument implémenter la classe KeyListener. cette implémentation implique la redéfinition de ttes ses méthodes (keyPressed, KeyTyped et keyReleased).
(on peut par exemple les regrouper dans une classe interne ClavieListener par exemple, juste pour regrouper le code)
deux choses importantes manqué dans ton code:
- dans la classe Fenetre: this.addKeyListener(Classe KeyListener);
- la fonction repaint() qui ré-affiche ta fenetre avec ton panneau Table actualisé: this.repaint().
et voila ton code modifié:
//Classe MaClasse:
//Classe Fenetre:
//Classe Table (qui est un panneau normalement)
NB: Tu peux encore jouer sur l'affichage pour bien éliminer ttes les anomalies, mais l'idée principale de l'interface KeyListener reste la même.
Bonne chance
Being normal is boring... being geek is interesting
pour détecter les touches du clavier, il faut absolument implémenter la classe KeyListener. cette implémentation implique la redéfinition de ttes ses méthodes (keyPressed, KeyTyped et keyReleased).
(on peut par exemple les regrouper dans une classe interne ClavieListener par exemple, juste pour regrouper le code)
deux choses importantes manqué dans ton code:
- dans la classe Fenetre: this.addKeyListener(Classe KeyListener);
- la fonction repaint() qui ré-affiche ta fenetre avec ton panneau Table actualisé: this.repaint().
et voila ton code modifié:
//Classe MaClasse:
public class MaClasse { public static void main(String[] args) { Fenetre fen = new Fenetre(); } }
//Classe Fenetre:
import java.awt.Color; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; public class Fenetre extends JFrame{ Table tab = new Table(); public Fenetre() { this.setTitle("Salut"); this.setSize(800, 500); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); //La fenetre doit ecouter les événnements du clavier //************************************************* this.addKeyListener(new ClavierListener()); this.setContentPane(tab); this.setBackground(new Color(200,200,200)); } class ClavierListener implements KeyListener{ @Override public void keyTyped(KeyEvent e) { if(e.getKeyChar()=='a') tab.setPosYH(tab.getPosYH()+10); else if(e.getKeyChar()=='q') tab.setPosYH(tab.getPosYH()-10); else tab.setPosYH(tab.getPosYH()+1); tab.repaint(); } @Override public void keyPressed(KeyEvent e) { // TODO Auto-generated method stub } @Override public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub } } }
//Classe Table (qui est un panneau normalement)
import java.awt.Color; import java.awt.Graphics; import java.awt.event.KeyEvent; import javax.swing.JPanel; public class Table extends JPanel{ private int posXLT = 10; private int posYHT = 10; private int posXL = 10; private int posYH; public int getPosYH() { return posYH; } public void setPosYH(int posYH) { this.posYH = posYH; } public void paintComponent(Graphics g) { g.setColor(new Color(240,240,240)); g.fillRect(posXLT, posYHT, (this.getWidth() - posXLT*2), (this.getHeight() - posYHT*2)); g.setColor(new Color(0,0,0)); g.fillRect(posXL, posYH+5, (this.getHeight()/8/4), (this.getHeight()/8)); g.fillRect(posXL+10, posYH+30, (this.getHeight()/8/4), (this.getHeight()/8)); } }
NB: Tu peux encore jouer sur l'affichage pour bien éliminer ttes les anomalies, mais l'idée principale de l'interface KeyListener reste la même.
Bonne chance
Being normal is boring... being geek is interesting
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
27 mars 2013 à 19:12
27 mars 2013 à 19:12
Bonjour,
si on essaie d'espionner sur nos booleans, on peut détecter peut être une des limitation de la keyListener en java. Modifie le code de la classe Fenetre pour comme ainsi:
on remarque que pour le cas de ton probleme qu'après relaché la 2ieme touche, l'autre reste tjrs en true, mais il n'y a pas de rafraichissement, c'est a dire, que la methode keyTyped ne se déclenche pas.
j'ai encore introduit des espions pour voir les touches relâchées, meme remarque, quand on relache la 2ieme touche enfoncée, la première ne s'affiche pas comme touche enfoncée. ce qui preuve définitivement que la méthode keyTyped ne se déclenche pas.
je pense qu'il faut chercher encore, dans les Threads, la concurrence entre les touches (car l'ordre d'enfoncer et relacher les touches influence le fonctionnement de ton programme) ou peut etre une méthode sophistiquée pour corriger le problème.
Bonne chance
si on essaie d'espionner sur nos booleans, on peut détecter peut être une des limitation de la keyListener en java. Modifie le code de la classe Fenetre pour comme ainsi:
import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.Timer; public class Fenetre extends JFrame{ Table tab = new Table(); private boolean touchea = false; private boolean toucheq = false; private boolean touchep = false; private boolean touchem = false; private Thread thread; public Fenetre() { this.setTitle("Salut"); this.setSize(859, 568); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); this.addKeyListener(new ClavierListener()); this.setContentPane(tab); this.setBackground(new Color(200,200,200)); /*Timer timer = new Timer(2000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.out.println("Etat des touches: \ta: "+touchea+",\t q: "+toucheq+",\t " + "p: "+touchep+",\t m: "+touchem); } }); timer.start();*/ } class ClavierListener implements KeyListener{ public void keyTyped(KeyEvent e) { String message= new String("touches enfoncées: "); int deplacement=1; if(touchea == true) { tab.setPosYHRG(tab.getPosYHRG()-deplacement); message+=", a";} if(toucheq == true) { tab.setPosYHRG(tab.getPosYHRG()+deplacement); message+=", q";} if(touchep == true) { tab.setPosYHRD(tab.getPosYHRD()-deplacement); message+=", p";} if(touchem == true) { tab.setPosYHRD(tab.getPosYHRD()+deplacement); message+=", m";} tab.repaint(); System.out.println(message); /*try { Thread.sleep(1); } catch (InterruptedException ie) { ie.printStackTrace(); }*/ } public void keyPressed(KeyEvent e) { if (e.getKeyChar()=='a') { touchea = true;} else if (e.getKeyChar() == 'q') { toucheq = true;} else if (e.getKeyChar()=='p') { touchep = true;} else if (e.getKeyChar() == 'm') { touchem = true;} } public void keyReleased(KeyEvent e) { String message= new String("touches relachées: "); if (e.getKeyChar()=='a') { touchea = false; message+="a";} else if (e.getKeyChar() == 'q') { toucheq = false; message+="q";} else if (e.getKeyChar()=='p') { touchep = false; message+="p";} else if (e.getKeyChar() == 'm') { touchem = false; message+="m";} System.out.println(message); } } }
on remarque que pour le cas de ton probleme qu'après relaché la 2ieme touche, l'autre reste tjrs en true, mais il n'y a pas de rafraichissement, c'est a dire, que la methode keyTyped ne se déclenche pas.
j'ai encore introduit des espions pour voir les touches relâchées, meme remarque, quand on relache la 2ieme touche enfoncée, la première ne s'affiche pas comme touche enfoncée. ce qui preuve définitivement que la méthode keyTyped ne se déclenche pas.
je pense qu'il faut chercher encore, dans les Threads, la concurrence entre les touches (car l'ordre d'enfoncer et relacher les touches influence le fonctionnement de ton programme) ou peut etre une méthode sophistiquée pour corriger le problème.
Bonne chance
Pulsar360
Messages postés
113
Date d'inscription
lundi 12 novembre 2012
Statut
Membre
Dernière intervention
29 août 2018
10
27 mars 2013 à 20:13
27 mars 2013 à 20:13
Bonjour,
Merci bcp pour ton aide, c'est super sympas. Je vais chercher du coté des Threads et j'espère trouver, si jamais tu pense à quelque chose n'hésite pas à m'en faire par, des que je trouve la solution je la poste de toute manière, ça pourra toujours servir à une autre personne.
Bonne soirée.
Merci bcp pour ton aide, c'est super sympas. Je vais chercher du coté des Threads et j'espère trouver, si jamais tu pense à quelque chose n'hésite pas à m'en faire par, des que je trouve la solution je la poste de toute manière, ça pourra toujours servir à une autre personne.
Bonne soirée.
Pulsar360
Messages postés
113
Date d'inscription
lundi 12 novembre 2012
Statut
Membre
Dernière intervention
29 août 2018
10
28 mars 2013 à 20:16
28 mars 2013 à 20:16
Apparemment il me faudrais un Thread mais je n'arrive pas à l'utiliser, si une personne pouvais m'aider !!
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
Modifié par walidovich_85 le 29/03/2013 à 01:17
Modifié par walidovich_85 le 29/03/2013 à 01:17
Bonjour chef,
enfaite, la solution (pas encore testé) vient d'être confirmé par un de mes amis.
il consiste à créer un Thread quand on appuie sur une touche, et de le tuer (le meme Thread) quand on relache la touche qui la déclencher.
techniquement je ne sais pas encore comment introduire le thread, mais je vais chercher des exemples et faire l'echange avec toi.
Bonne chance
Being normal is boring... being geek is interesting
enfaite, la solution (pas encore testé) vient d'être confirmé par un de mes amis.
il consiste à créer un Thread quand on appuie sur une touche, et de le tuer (le meme Thread) quand on relache la touche qui la déclencher.
techniquement je ne sais pas encore comment introduire le thread, mais je vais chercher des exemples et faire l'echange avec toi.
Bonne chance
Being normal is boring... being geek is interesting
Pulsar360
Messages postés
113
Date d'inscription
lundi 12 novembre 2012
Statut
Membre
Dernière intervention
29 août 2018
10
29 mars 2013 à 14:51
29 mars 2013 à 14:51
Bon j'ai un petit peu avancer (enfin je croit) mais ça ne fonctionne pas très bien, voir moins bien qu'avant vue que les raquettes ne bouge plus du tous. Mais je pense être sur la bonne voie.
Je te poste le codes si tu veux essayer de voir, mais le souci est certainement dans ma façon d'utiliser les Thread.
Voilas, j'ai séparer chaque Joueur et créer une classe Thread pour chaqu'un d'eux afin de pouvoir mieux moduler le code.
J'ai renommer les Classe avec un "E" car j'ai garder une copie d'un précédent code au cas ou il faille revenir en arrière.
Je te poste le codes si tu veux essayer de voir, mais le souci est certainement dans ma façon d'utiliser les Thread.
// Toujours la même classe Ping-Pong de départ: import java.awt.*; import javax.swing.*; public class PingPongE { public static void main(String[] args) { FenetreE fen = new FenetreE(); } } --------------------------------------------------------------------------------- // Classe FenetreE: import java.awt.Color; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; public class FenetreE extends JFrame { TableE tab = new TableE(); Joueur1 j1 = new Joueur1(); Joueur2 j2 = new Joueur2(); public FenetreE() { this.setTitle("Salut"); this.setSize(800, 500); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); this.setContentPane(tab); this.setBackground(new Color(200,200,200)); } } --------------------------------------------------------------------------------- // Classe TableE: import java.awt.Color; import java.awt.Graphics; import java.awt.event.KeyEvent; import javax.swing.JPanel; public class TableE extends JPanel { private int posXLT = 10; private int posYHT = 10; private int posXLRG = 20; private int posYHRG; private int posXLRD = 20; private int posYHRD; public int getPosYHRG() { return posYHRG; } public void setPosYHRG(int posYHRG) { this.posYHRG = posYHRG; } public int getPosYHRD() { return posYHRD; } public void setPosYHRD(int posYHRD) { this.posYHRD = posYHRD; } public void paintComponent(Graphics g) { g.setColor(new Color(240,240,240)); g.fillRect(posXLT, posYHT, (this.getWidth() - posXLT*2), (this.getHeight() - posYHT*2)); g.setColor(new Color(0,0,0)); g.fillRect(posXLRG, posYHRG+10, (this.getHeight()/8/4), (this.getHeight()/8)); g.fillRect(this.getWidth()-20-(this.getHeight()/8/4), posYHRD+10, (this.getHeight()/8/4), (this.getHeight()/8)); } } --------------------------------------------------------------------------------- //Nouvelle Classe Joueur1: import java.awt.event.KeyEvent; import java.awt.event.KeyListener; class Joueur1 implements KeyListener{ private boolean touchea = false; private boolean toucheq = false; public boolean getTouchea() { return touchea; } public void setTouchea(boolean touchea) { this.touchea = touchea; } public boolean getToucheq() { return toucheq; } public void setToucheq(boolean toucheq) { this.toucheq = toucheq; } TableE tabJ1 = new TableE(); public void keyTyped(KeyEvent e) { ThreadJoueur1 joueur1 = new ThreadJoueur1(); joueur1.start(); //Je ne sais pas si il faut mettre repaint ici... tabJ1.repaint(); //c'est peut etre pas utilise de mettre le thread.sleep() ici si on le met dans ThreadJoueur1 /* try { Thread.sleep(1); } catch (InterruptedException ie) { ie.printStackTrace(); }*/ } public void keyPressed(KeyEvent e) { if (e.getKeyChar()=='a') { touchea = true; } else if (e.getKeyChar() == 'q') { toucheq = true; } } public void keyReleased(KeyEvent e) { if (e.getKeyChar()=='a') { touchea = false; } else if (e.getKeyChar() == 'q') { toucheq = false; } } } --------------------------------------------------------------------------------- // Nouvelle Classe ThreadJoueur1: class ThreadJoueur1 extends Thread { ThreadJoueur1() { // ... code du constructeur ???? peut etre à créer, je ne sais pas encore ce qu'il faut mettre ici } public void run() { Joueur1 joueur1 = new Joueur1(); TableE tableJ1 = new TableE(); if(joueur1.getTouchea() == true) { tableJ1.setPosYHRG(tableJ1.getPosYHRG()-10); } //penser au conflie si joueur1 appuie sur 'a' ET sur 'q'. else if(joueur1.getToucheq() == true) { tableJ1.setPosYHRG(tableJ1.getPosYHRG()+10); } //mettre un Threas.sleep() dans un catch pour executer seulement un temps ce thread ci et laisser un // autre threas s'executer pour permettre au joueur2 de déplacer ca raquette a lui aussi. } } --------------------------------------------------------------------------------- //Nouvelle Classe Joueur2: import java.awt.event.KeyEvent; import java.awt.event.KeyListener; class Joueur2 implements KeyListener{ private boolean touchep = false; private boolean touchem = false; public boolean getTouchep() { return touchep; } public void setTouchep(boolean touchep) { this.touchep = touchep; } public boolean getTouchem() { return touchem; } public void setTouchem(boolean touchem) { this.touchem = touchem; } TableE tabJ2 = new TableE(); public void keyTyped(KeyEvent e) { ThreadJoueur2 joueur2 = new ThreadJoueur2(); joueur2.start(); //C'est peut etre inutile de mettre le repaint ici si on peut le mettre dans le thread joueur1 tabJ2.repaint(); //c'est peut etre pas utilise de mettre le thread.sleep() ici si on le met dans ThreadJoueur1 /* try { Thread.sleep(1); } catch (InterruptedException ie) { ie.printStackTrace(); }*/ } public void keyPressed(KeyEvent e) { if (e.getKeyChar()=='p') { touchep = true; } else if (e.getKeyChar() == 'm') { touchem = true; } } public void keyReleased(KeyEvent e) { if (e.getKeyChar()=='p') { touchep = false; } else if (e.getKeyChar() == 'm') { touchem = false; } } } --------------------------------------------------------------------------------- //Nouvelle Classe ThreadJoueur2: class ThreadJoueur2 extends Thread { ThreadJoueur2() { // ... code du constructeur ???? peut etre à créer, je ne sais pas encore ce qu'il faut mettre ici } public void run() { Joueur2 joueur2 = new Joueur2(); TableE tableJ2 = new TableE(); if(joueur2.getTouchep() == true) { tableJ2.setPosYHRG(tableJ2.getPosYHRG()-10); } //penser au conflie si joueur1 appuie sur 'a' ET sur 'q'. else if(joueur2.getTouchem() == true) { tableJ2.setPosYHRG(tableJ2.getPosYHRG()+10); } //mettre un Threas.sleep() dans un catch pour executer seulement un temps ce thread ci et laisser un // autre threas s'executer pour permettre au joueur2 de déplacer ca raquette a lui aussi. } }
Voilas, j'ai séparer chaque Joueur et créer une classe Thread pour chaqu'un d'eux afin de pouvoir mieux moduler le code.
J'ai renommer les Classe avec un "E" car j'ai garder une copie d'un précédent code au cas ou il faille revenir en arrière.
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
29 mars 2013 à 17:33
29 mars 2013 à 17:33
bon une lecture rapide de kelkin ki n'a pa dormi hier:
1-ta fenetre n'implemente pas l'interface keylistener, c pr ça ke tes objets ne bougent pas.
2-tabJ1 n'est pas relié dans la fenetre ou a la table du fenetre, d'abord ce le paintcomponent du Table qui permet de rafraichir les Objets ne sera pas appelé.
3- je sui totalement perdu dans le code des joueurs, manque du sommeil ou peut etre, mais je ne voit pa la liaison des joueurs dans la Table ou la fenetre, ils sont juste déclaré... ou peut etre je ne voi pa le code en clair.
entre autre c pr ça ke j'ai pensé à simplifier le probleme, puisk nous visons l'aide des autres. car personne ne va casser la tete pour comprendre le code completement et de proposer l'aide.
1-ta fenetre n'implemente pas l'interface keylistener, c pr ça ke tes objets ne bougent pas.
2-tabJ1 n'est pas relié dans la fenetre ou a la table du fenetre, d'abord ce le paintcomponent du Table qui permet de rafraichir les Objets ne sera pas appelé.
3- je sui totalement perdu dans le code des joueurs, manque du sommeil ou peut etre, mais je ne voit pa la liaison des joueurs dans la Table ou la fenetre, ils sont juste déclaré... ou peut etre je ne voi pa le code en clair.
entre autre c pr ça ke j'ai pensé à simplifier le probleme, puisk nous visons l'aide des autres. car personne ne va casser la tete pour comprendre le code completement et de proposer l'aide.
walidovich_85
Messages postés
608
Date d'inscription
mardi 12 janvier 2010
Statut
Membre
Dernière intervention
25 octobre 2015
73
29 mars 2013 à 17:36
29 mars 2013 à 17:36
Voila le code ke j'ai fai pour pouvoir demandé l'aide: il s'agit tt simplement d'affiché les touches qui sont enfoncées.
je vais essayer avec ce code, de chercher comment introduire les Thread, puisk c le meme comportement de ton jeu ping pong (si j'apui sur A et pui sur B et je relache B, A ne se voi pa comme enfoncé <=> l'arrêt de la raquette 1)
Bonne chance
import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.HashSet; import java.util.Iterator; import javax.swing.JFrame; public class Clavier extends JFrame implements KeyListener { private HashSet<Character> touches = new HashSet<Character>(); public Clavier(){ this.setSize(120, 100); this.addKeyListener(this); this.setLocationRelativeTo(null); this.setVisible(true); this.setDefaultCloseOperation(EXIT_ON_CLOSE); } @Override public void keyPressed(KeyEvent arg0) { touches.add(arg0.getKeyChar()); } @Override public void keyReleased(KeyEvent arg0) { touches.remove(arg0.getKeyChar()); if(touches.isEmpty()) System.out.println("Aucune touche n'est enfoncée"); } @Override public void keyTyped(KeyEvent arg0) { String message= new String("Les touches enfoncées sont: "); Iterator iter= touches.iterator(); while(iter.hasNext()){ //if(e.) message+=", "+iter.next(); } System.out.println(message); } public static void main(String[] args) { Clavier clavier= new Clavier(); } }
je vais essayer avec ce code, de chercher comment introduire les Thread, puisk c le meme comportement de ton jeu ping pong (si j'apui sur A et pui sur B et je relache B, A ne se voi pa comme enfoncé <=> l'arrêt de la raquette 1)
Bonne chance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pulsar360
Messages postés
113
Date d'inscription
lundi 12 novembre 2012
Statut
Membre
Dernière intervention
29 août 2018
10
4 avril 2013 à 22:45
4 avril 2013 à 22:45
C'est bon j'ai réussis, j'ai galérer pendant 1 semaine.
Je poste la SOLUTION pour ceux qui un jour en aurai besoin :
// Classe Test :
// Classe MyKeyAdapter :
// Classe ThreadA :
// Classe ThreadB :
VOILAAAAAAAAS !!
Bien sure quelques modifications apporté serait pas une mauvaise idée.
Je poste la SOLUTION pour ceux qui un jour en aurai besoin :
// Classe Test :
import javax.swing.JFrame; public class Test { public static void main(String[] args) { MyKeyAdapter adapt = new MyKeyAdapter(); JFrame fen = new JFrame(); fen.setTitle("Test"); fen.setSize(200,100); fen.addKeyListener(adapt); fen.setVisible(true); fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); int i = 100; while (i > 0) { ThreadA tA = new ThreadA(adapt.doAction()); tA.start(); ThreadB tB = new ThreadB(adapt.doAction2()); tB.start(); try { Thread.sleep(60); } catch (InterruptedException ie) { ie.printStackTrace(); } } } }
// Classe MyKeyAdapter :
import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; public class MyKeyAdapter extends KeyAdapter { private boolean isAPressed = false; private boolean isBPressed = false; private boolean presser = false; public boolean getPresser() { return presser;} public void setPresser(boolean presser) { this.presser = presser; } public void keyPressed(KeyEvent e) { if(e.getKeyCode()== 0x41) { presser = true; isAPressed = true; } if(e.getKeyCode()== 0x42) { presser = true; isBPressed = true; } } public void keyReleased(KeyEvent e) { if(e.getKeyCode()== 0x41) { isAPressed = false; } if(e.getKeyCode()== 0x42) { isBPressed = false; } } public boolean doAction() { return isAPressed; } public boolean doAction2() { return isBPressed; } }
// Classe ThreadA :
class ThreadA extends Thread { private boolean joueur1; public ThreadA(boolean joueur1) { this.joueur1 = joueur1; } public void run() { if(joueur1 == true) System.out.println(joueur1 + " Salut"); } }
// Classe ThreadB :
class ThreadB extends Thread { private boolean joueur1; public ThreadB(boolean joueur1) { this.joueur1 = joueur1; } public void run() { if(joueur1 == true) System.out.println(joueur1 + " Coucou"); } }
VOILAAAAAAAAS !!
Bien sure quelques modifications apporté serait pas une mauvaise idée.
27 mars 2013 à 02:12
Je viens d'utiliser ta correction et j'ai rajouter deux trois truc, par contre j'ai un autre souci, j'essaye de faire un pingpong à deux joueur sur le même clavier, seulement il n'est possible de gérer que une seul entrer clavier à la fois, c'est à dire si le premier joueur bouge ça raquette le deuxième joueur ne peut pas bouger la sienne (sauf en interrompant l'action du joueur 1).
Voici le nouveau code:
27 mars 2013 à 16:59
Voici la solution si ça intéresse quelqu'un un jour, il vous suffit de remplacer ma classe fenetre par ceci:
Par contre je rencontre encore un souci en faisant comme cela; disons que le joueur 1 appuis sur 'q' pour descendre ça raquette et juste après le joueur 2 appuie sur 'm' pour baisser la sienne également, et bien les deux raquettes baisse, MAIS si le joueur 2 arrête d'appuyer sur 'm' ce sont les deux raquettes qui s'arrête, hors j'aimerais que la raquette du joueur 1 continue ça course vue que lui est encore en train d'appuyer sur le bouton 'q'.
Quelqu'un pour m'aider?
P.S.: Les 2 raquettes peuvent sortir hors de la fenêtre avec ce code car j'ai pas laisser les limites, si vous les souhaitez il vous suffit de les rajouter.