bonjours voila j'ai un probleme dans une application que je cree une table de pingpong avec une interface autour donc au debut j'ai cree les raquette et la balle avec un Graphics tout va bien puis je commence a coder une partit pour faire bouger les raquette du joueur par rapport au coordonner la tout va bien aussi mais quand je crre le code pour faire bouger la balle pour la renvoyer de l'autre coter de la table la probleme l'application ne d'affiche plus
voila une partit du code oui je mes les evennement des raquettes et la balles
[QUOTE]
[....]
final JPanel pane2 = new JPanel(){
private int balle_X = BALLE_X_DEPART;
private int balle_Y = BALLE_Y_DEPART;
public void paint(Graphics g) {
super.paint(g);
//dessine la table verte
g.setColor(new Color(couleur1, couleur2,couleur3));
g.fillRect(DISTANCE_BORD_X_TABLE , DISTANCE_BORD_Y_TABLE, LARGEUR_TABLE,HAUTEUR_TABLE );
//dessine la profondeur de la table
g.setColor(new Color(couleur4,couleur5,couleur6));
g.fillRect(DISTANCE_BORD_Y_TABLE_FONCER, DISTANCE_BORD_X_TABLE_FONCER, LONGUEUR_FONCER, LARGEUR_FONCER);
g.fillRect(DISTANCE_BORD2_Y_TABLE, DISTANCE_BORD2_X_TABLE, LARGEUR_FONCER2, LONGUEUR_FONCER2);
[...coupeure trop long.........]
//Dessine le filet
g.setColor(new Color(couleur16, couleur17, couleur18));
g.drawLine(POINT_LIGNE_HAUT, LIGNE_COMMENCE, POINT_LIGNE_BAS, LONGUEUR_LIGNE);
g.drawLine(POINT_LIGNE_HAUT2, LIGNE_COMMENCE, POINT_LIGNE_BAS2, LONGUEUR_LIGNE);
g.drawLine(POINT_LIGNE_HAUT3, LIGNE_COMMENCE, POINT_LIGNE_BAS3, LONGUEUR_LIGNE);
//dessine l'ombre du filet
g.setColor(new Color(couleur19, couleur20, couleur21));
g.drawLine(POINT_LIGNE_HAUT4, LIGNE_COMMENCE, POINT_LIGNE_BAS4, LONGUEUR_LIGNE);
//dessine la balle de ping pong
g.setColor(new Color(couleur22,couleur23 , couleur24 ));
g.fillOval(balle_X, balle_Y, 10, 10);
// indique les coordoner de la souris a effacer par la suite
g.drawString("Y: "+Y+" X: "+X+" i:"+i, 30, 10);
run1();
if(nouvelle2 == true){
Graphics2D surface = (Graphics2D) g;
surface.setPaint(new Color(0, 0, 255, 64));
surface.setFont(new Font("SansSerif", Font.ITALIC+Font.BOLD, 30));
surface.drawString("Nouvelle Partie", 30, 110);
surface.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
}
if(pointJoueur >= 21 && texteGagant2 == true){
texteGagant = true;
}else if (texteGagant2 == false){
texteGagant = false;
}
if(texteGagant == true && pointJoueur > pointOrdi && pointJoueur-2 >= pointOrdi ){
Graphics2D surface = (Graphics2D) g;
// // tracé du texte en transparence sur l'image
surface.setPaint(new Color(0, 0, 255, 64));
surface.setFont(new Font("SansSerif", Font.ITALIC+Font.BOLD, 30));
surface.drawString("Vous avez gagné", 30, 110);
surface.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
quiterPartie = true;
repaint();
}else if (texteGagant == false){
repaint();
}
quitter();
serviceEnfant();
run();
}
public void run(){
while(true){
if(balleService){//si la balle est en mouvement
//Etape1. La balle se deplace t'elle vers la gauche?
if(déplacementGauche && balle_X > BALLE_X_MIN){
rebondPossible = (balle_Y >= departRaquetteOrdi
&& balle_Y < (departRaquetteOrdi +
departRaquetteOrdi) ? true : false);
balle_Y -= deplacmentVertical;
balle_X -= INCREMENTATION_BALLE;
}
}
}
}
public void run1(){
if(nouvelle == true){
nouvelle2 = true;
i++;
RAQUETTE_ENFANT_Y_DEPART = 95;
RAQUETTE_ENFANT_Y2 = 226;
RAQUETTE_ENFANT_Y3 = 226;
if(i == 200){
nouvelle = false;
}
}else if(nouvelle == false){
nouvelle2 = false;
i = 0;
}
}
private void serviceEnfant(){
int raquetteJoueur = RAQUETTE_ENFANT_Y_DEPART;
balleService = true;
balle_X = RAQUETTE_ENFANT_X -5;
balle_Y = raquetteJoueur +10;
if(service == false && balle_Y > HAUTEUR_TABLE / 2){
deplacmentVertical = -1;
}else{
deplacmentVertical = 1;
}
}
public void quitter(){
if(quiterPartie1 == true && quiterPartie == true){
System.exit(0);
}else if (quiterPartie1 == false){}
}};
pane2.addMouseMotionListener(new MouseAdapter(){
public void mouseMoved(MouseEvent événement) {
if(nouvelle == false){
int souris_Y = événement.getY();
int souris_X = événement.getX();
Y = souris_Y;
X = souris_X;
//actionne la raquette principale du joueur
if(souris_Y < RAQUETTE_ENFANT_Y_DEPART +15 && RAQUETTE_ENFANT_Y_DEPART + blocageRaquette33 > HAUT_TABLE +15 ){
RAQUETTE_ENFANT_Y_DEPART -= 4;
pane2.repaint();
}else if (souris_Y > RAQUETTE_ENFANT_Y_DEPART
[.....coupure du code tros long....]
pane2.repaint();
}else if(souris_X > RAQUETTE_ENFANT_Y3 +15 && RAQUETTE_ENFANT_Y3 + blocageRaquette44 < LARGEUR_TABLE -6 && souris_Y < LIGNE2_COMMENCE){
RAQUETTE_ENFANT_Y3 += 3;
pane2.repaint();
}}}});
[...]
[/QUOTE]
et j'ai appris lors de mon tuto que l'ordinateur ne pouviat pas effectuer deux tache en meme temps donc on ma dit de mettre ce code
[QUOTE]
public void actionPerformed(ActionEvent evt){
//cree un fil et execute le code "tuer le temps"
//sans bloquer la fenetre.
Thread travailleur = new Thread(this);
travailleur.start();//Ceci appelle la methode run()
}
public void run(){...}
[/QUOTE]
donc je pense que ce code suffirait pour faire marcher les 2 taches en meme temps mais je voudrias savoir ou doje le placer pour qu il marche et est ce que le code c'est bine celui ou il ya t i ldes modification a faire sur celui ci??
meric d'avance