Problème SWING

Résolu/Fermé
Pulsar360 Messages postés 114 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 29 août 2018 - 5 avril 2013 à 12:49
Pulsar360 Messages postés 114 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 29 août 2018 - 5 avril 2013 à 19:27
Bonjour,

Je suis en train de m'entraîner à coder, pour cela je code un petit jeu de ping pong à deux joueur sur le même clavier, seulement quand je déplace la raquette elle ne bouge pas, je ne vois ps où est mon problème.

Voici mon code:

//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("salut");
		fen.setSize(400,200);
		fen.addKeyListener(adapt);
		fen.setVisible(true);
		fen.setContentPane(new Table());
		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;
	
	public void keyPressed(KeyEvent e) {
		if(e.getKeyCode()== 0x41) {
			isAPressed = true; }
		if(e.getKeyCode()== 0x42) {
			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;
	Table tab = new Table();
	
	public ThreadA(boolean joueur1) {
	this.joueur1 = joueur1; }
	
	public void run() {
		if(joueur1 == true)
			System.out.println(joueur1 + " Salut.");
			tab.setPosYHRG(tab.getPosYHRG()-10);} }


//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."); } }


//Classe Table:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;


public class Table extends JPanel {
	
	private int posXLT = 10;
	private int posYHT = 10;
	
	private int posXLRG = 10;
	private int posYHRG = 10;
	
	private int posXLRD = 10;
	private int posYHRD = 10;
	
	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)); }

	public int getPosYHRG() {
		return posYHRG; }

	public void setPosYHRG(int i) {
	} }
A voir également:

1 réponse

Pulsar360 Messages postés 114 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 29 août 2018 10
5 avril 2013 à 17:14
Et bien je me suis débrouille sans vous.
Voici la correction :

// 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("salut");
		fen.setSize(400,200);
		fen.addKeyListener(adapt);
		Table tab = new Table();
		fen.setContentPane(tab);
		fen.setVisible(true);
		fen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
 
		int i = 100;
		while (i > 0) {
 
			ThreadA  tA = new ThreadA(adapt.doAction(),tab);
			tA.start();
 
			ThreadB  tB = new ThreadB(adapt.doAction2());
			tB.start();
 
		        try { 
                               Thread.sleep(60); 
                        }
		        catch (InterruptedException ie) { 
                               ie.printStackTrace(); 
                        } 
               } 
       }
}



//Classe MyKeyAdapter: (Celle ci n'a pas changer)

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class MyKeyAdapter extends KeyAdapter {
	
	private boolean isAPressed = false;
	private boolean isBPressed = false;
	
	public void keyPressed(KeyEvent e) {
		if(e.getKeyCode()== 0x41) {
			isAPressed = true; }
		if(e.getKeyCode()== 0x42) {
			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;
	Table tab ;
 
	public ThreadA(boolean joueur1,Table tab) {
	          this.joueur1 = joueur1; 
	          this.tab = tab;
        }
 
	public void run() {
		if(joueur1 == true) {
			System.out.println(joueur1 + " Salut.");
			tab.setPosYHRG(tab.getPosYHRG()+10);
			tab.repaint();
		}
	} 
}

// Classe ThreadB: (Elle n'a pas changer):

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."); } }

// Classe Table:

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;


public class Table extends JPanel {
	
	private int posXLT = 10;
	private int posYHT = 10;
	
	private int posXLRG = 10;
	private int posYHRG = 10;
	
	private int posXLRD = 10;
	private int posYHRD = 10;
	
	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)); }
	

	public int getPosYHRG() {
		return posYHRG; }

	public void setPosYHRG(int i) {
		posYHRG = i;
	} }





Voilas, rien de bien méchant, juste des petits oublies.
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
5 avril 2013 à 19:13
"Et bien je me suis débrouille sans vous."
"Voilas, rien de bien méchant, juste des petits oublies."

Bah oui, mais si tu vas plus vite que nous aussi ^^

À l'occasion je regarderais peut-être ton code complet pour "critiquer" si tu veux, en attendant j'ai juste regardé vite fait, et il y a une monstruosité qui me saute aux yeux :

Quand tu fais (par exemple)

public void keyPressed(KeyEvent e) {
	if(e.getKeyCode()== 0x41) {
		isAPressed = true; }
	if(e.getKeyCode()== 0x42) {
		isBPressed = true; } }

Il serait beaucoup plus compréhensible d'utiliser les constantes de la classe KeyEvent :

public void keyPressed(KeyEvent e)
{
	switch (e.getKeyCode())
	{
		case KeyEvent.VK_A : isAPressed = true; break;
		case KeyEvent.VK_B : isBPressed = true; break;
	}
}
0
Pulsar360 Messages postés 114 Date d'inscription lundi 12 novembre 2012 Statut Membre Dernière intervention 29 août 2018 10
5 avril 2013 à 19:27
C'était pas méchamment que j'ai dit ça =), je me doute qu'il n'est pas possible de répondre à tous le monde et rapidement en plus.

Ben justement, comme tu le vois il y a des "monstruosités" parce que je n'est que 2 mois de JAVA derrière moi, et je n'est aucun autre moyen d'apprendre que de par moi même (tuto, livre, forum,...) du coup je suis totalement ouvert au critique, t'en quelle sont constructives bien sûr, ça ne peut faire que m'aider.
J'ai rajouter les morceaux de code qu'il manquer (pour déplacer correctement les deux raquettes) et je peut te le transmettre si tu veux pour critiquer, si tu le temps bien sur.

Merci pour ton aide en tous cas.
0