Ma variable ne se transmet pas

Résolu/Fermé
Pulsar360 Messages postés 114 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 29 août 2018 - 29 mars 2013 à 23:43
Pulsar360 Messages postés 114 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 29 août 2018 - 4 avril 2013 à 22:24
Bonjour,

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.

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
30 mars 2013 à 14:21
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à ?
0
Pulsar360 Messages postés 114 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 29 août 2018 10
30 mars 2013 à 14:34
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.
0
Pulsar360 Messages postés 114 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 29 août 2018 10
30 mars 2013 à 14:37
P.S.: Les KeyListener sont là pour intercepter la touche que je presse et que je relâche.
0
Pulsar360 Messages postés 114 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 29 août 2018 10
30 mars 2013 à 14:38
Et au faite, se qui ne marche pas, c'est le faite que quand j'appuis sur la touche 'a' il y a touche le chiffre 12 qui s'affiche au lieu du chiffre 1 comme je le demande..
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
30 mars 2013 à 14:47
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...
0
Pulsar360 Messages postés 114 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 29 août 2018 10
Modifié par Pulsar360 le 4/04/2013 à 22:37
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 :
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.
0