Bonjour, je suis en train de programmer un programme qui joue au morpion contre un utilisateur et j'ai un problème d'affichage quand l'ordinateur joue un coup. Voici la fonction qui s'execute quand l'utlisateur joue un coup :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void faireJouerOrdi() { Grille.nbTurn++; Grille=Fonction.choice(Grille); Grille.printG(); Grille.repaint(); }
--Grille est l'instance de ma classe Grid qui étend JPanel et qui contient les informations sur l'état du jeu à un moment donné.
--La fonction choice renvoie la nouvelle grille de jeu à afficher après que le programme a décidé de son coup.
--La méthode printG de ma classe Grid me permet d'afficher la grille dans la console renvoyée par la fonction choice après que l'ordinateur a joué son coup. (Pour vérifier les calculs du programme puisqu'ils ne s'affichent pas dans la fenêtre prévue)
--La surcharge de paintComponents dans Grid est composée de trois méthodes de Grid :
une pour dessiner le plateau de jeu;
une pour dessiner les ronds;
une pour dessiner les croix;
--La methode faireJouerOrdi() est écrite dans une classe Buttons qui étend aussi JPanel. (Les instance de Buttons ont un attribtut Grid)
Le problème est que seul le plateau de jeu s'affiche dans la fenêtre contenant le panel. Encore plus curieux, quand je met la troisième ligne en commentaire..... :
....le panel s'affiche correctement dans la fenêtre( c-à-d les coups de l'utilisateur s'affichent ) mais alors l'ordinateur ne joue plus puisque c'est la fonction Fonction.choix qui met à jour l'état du jeu après le coup de l'ordinateur. J'ai l'impression que repaint() ne s'éxecute pas après la fonction Fonction.choice. Est-ce que quelqu'un saurait pourquoi ? Merci d'avance pour votre aide, en espérant avoir été clair.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void faireJouerOrdi() { Grille.nbTurn++; //Grille=Fonction.choice(Grille); Grille.printG(); Grille.repaint(); }






Répondre avec citation
Partager