Ma variable ne se transmet pas
Résolu
Pulsar360
Messages postés
113
Date d'inscription
Statut
Membre
Dernière intervention
-
Pulsar360 Messages postés 113 Date d'inscription Statut Membre Dernière intervention -
Pulsar360 Messages postés 113 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un souci dans mon code, je n'arrive pas à transmettre une variable, c'est la variable reponseJ1.
Voici mon code:
Merci d'avance pour votre aide.
J'ai un souci dans mon code, je n'arrive pas à transmettre une variable, c'est la variable reponseJ1.
Voici mon code:
// Classe MainA: public class MainA { public static void main(String[] args) { KeyEventTestA bJ1 = new KeyEventTestA(); int rep = 12; if(bJ1.getReponseJ1()==1) { rep = 1;} else if(bJ1.getReponseJ1()==2) { rep = 2;} else if(bJ1.getReponseJ1()==3) { rep = 3;} ThreadTestB tB = new ThreadTestB("Blabla"); tB.start(); ThreadTestC tC = new ThreadTestC(rep); tC.start(); } } --------------------------------------------------------------------------- // Classe KeyEventTestA: import java.awt.event.KeyEvent; import java.awt.event.KeyListener; class KeyEventTestA implements KeyListener{ private boolean touchea = false; private boolean toucheq = false; private int reponseJ1; public int getReponseJ1() { return reponseJ1; } public void setReponseJ1(int reponseJ1) { this.reponseJ1 = reponseJ1; } public boolean getTouchea() { return touchea; } public void setTouchea(boolean touchea) { this.touchea = touchea; } public void keyTyped(KeyEvent e) { if(touchea == true) { reponseJ1 = 1; } else if(toucheq == true) { reponseJ1 = 2; } else {reponseJ1 = 3;} try { Thread.sleep(200); } 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; } } } --------------------------------------------------------------------------- //Classe ThreadTestB: class ThreadTestB extends Thread { private String name; public ThreadTestB(String name) { this.name = name; } public void run() { for(int i=0;i<10;i++) { System.out.println(name); try { Thread.sleep(500); } catch (InterruptedException e) {} } } } --------------------------------------------------------------------------- //Classe ThreadTestC: class ThreadTestC extends Thread { private int name; public ThreadTestC(int name) { this.name = name; } public void run() { for(int i=0;i<10;i++) { System.out.println(name); try { Thread.sleep(500); } catch (InterruptedException e) {} } } }
Merci d'avance pour votre aide.
A voir également:
- Ma variable ne se transmet pas
- Vba range avec variable ✓ - Forum VB / VBA
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ✓ - Forum Python
- Range avec une Variable ✓ - Forum VB / VBA
- Variable d'environnement temp ✓ - Forum Microsoft Office
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
2 réponses
Explique un peu mieux ce que tu fais, ou ce que tu voudrais faire, et ce qui ne marche pas. Moi à part "Blabla" et "12" je ne comprends pas grand chose, en particulier, pourquoi tu as des KeyListener alors que tu n'a pas de fenêtres (Frame, Applet, etc.)
Enfin, "transmettre une variable", qu'est ce que tu veux dire par là ?
Enfin, "transmettre une variable", qu'est ce que tu veux dire par là ?
A dsl si je n'est pas étés claire.
Je cherche à faire un jeu ping-pong pour m'entraîner a coder, et pour pouvoir déplacer chaqu'une des deux raquettes indépendamment avec le même clavier je souhaite créer un thread pour chaqu'une d'elle.
Voilas pourquoi j'ai construit ce nouveau code que je retranscrirais dans le jeux du ping-pong une fois que j'aurais réussis à interagir avec celui ci.
Mon but ici, c'est que quand j'appuis sur la touche 'a' de mon clavier, dans la console le chiffre 1 s'affiche et non plus le chiffre 12.
Je cherche à faire un jeu ping-pong pour m'entraîner a coder, et pour pouvoir déplacer chaqu'une des deux raquettes indépendamment avec le même clavier je souhaite créer un thread pour chaqu'une d'elle.
Voilas pourquoi j'ai construit ce nouveau code que je retranscrirais dans le jeux du ping-pong une fois que j'aurais réussis à interagir avec celui ci.
Mon but ici, c'est que quand j'appuis sur la touche 'a' de mon clavier, dans la console le chiffre 1 s'affiche et non plus le chiffre 12.
Mais le problème c'est que les Listener ne s'appliquent pas à la console !
Il te faut un composant graphique qui supporte ton Listener, afin de le lier avec une méthode spécifiquement dédiée. Sans cette liaison, Java ne récupère pas les touches appuyées.
Regarde le code de walidowich_85 ou le mien dans la discussion d'hier : Java keyListener multi touche. La liaison entre la JFrame et le KeyListener se fait grâce à la méthode addKeyListener. Sans cela, la fenêtre ne récupérerai pas non plus les évènements clavier...
Il te faut un composant graphique qui supporte ton Listener, afin de le lier avec une méthode spécifiquement dédiée. Sans cette liaison, Java ne récupère pas les touches appuyées.
Regarde le code de walidowich_85 ou le mien dans la discussion d'hier : Java keyListener multi touche. La liaison entre la JFrame et le KeyListener se fait grâce à la méthode addKeyListener. Sans cela, la fenêtre ne récupérerai pas non plus les évènements clavier...
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.