Bonjour,
Je programme un jeu de dame. Pour faire jouer un joueur, mon programme appelle la méthode jouer d'une classe joueur. Cette classe joueur peut tout aussi bien être un humain qu'un ordinateur. Quand c'est le tour de l'IA, aucun problème la fonction execute son traitement et renvoit le coup joué. En revanche quand c'est à l'humain de jouer, il faut attendre que l'utilisateur interagisse avec l'interface grapique.
Pour l'instant ma solution a été de mettre dans la classe qui contient la fonction jouer, une variable booléenne qu'un ActionListener vient modifier quand l'utilisateur a définit un coup, et de faire un while(actif) dans la fonction jouer.
Ce sera certainemen plus clair avec un résumé du code :
Voilà le principe général de la fonction. J'avais pensé à faire de Joueur un Thread mais il ne faut pas que le programme principal continue de tourner pendant que la fonction jouer est appelée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 class Humain extends Joueur{ boolean actif = true; Coup coup_choisi; public Coup jouer(){ //On met en place les ActionListener while(actif); return coup_choisi; } } class Ecoutre implements ActionListener{ public void ActionPerformed(ActionEvent e){ //Met à jour coup choisi //Met actif à false } }
Le problème du while(actif) c'est que j'ai l'impression qu'il fait un peu "ramer" le PC. Je n'ai pas l'impression que ce soit une solution très propre.
Y-a-t-il un moyen d'interrompre l'execution d'un programme tant qu'une action n'a pas été effectué ?
Merci
Partager