Bonjour à tous,
Je vous explique brièvement mon problème, j'ai développé (non sans mal) un jeu de puissance 4 en Java. Il est fondé sur le Design Pattern MVC.
Une classe Main lance la fonction statique main qui elle-même instancie le contrôleur qui contient le modèle et la vue. Ma séparation est bonne étant donné que je peux changer de bibliothèque (je peux faire une vue AWT ou SWT sans toucher aux données).
Voilà le problème, dans le modèle, il y a une boucle principale, qui teste la validité, si un joueur a gagné, etc., et surtout elle appelle une méthode play(), je m'explique :
Comme on doit pouvoir jouer contre l'ordinateur j'ai implémenté deux classes Human et Computer qui héritent d'une troisième classe abstraite que j'ai nommé Player. Ces deux classes implémentent une méthode qui s'appelle play(Game game) qui prend le modèle en paramètre.
Lorsqu'on crée une partie, la boucle principale est lancée et elle demande alternativement à chaque joueur, le choix qu'il ont fait pour continuer, ce choix est contenue dans la méthode play().
Si l'objet est un ordinateur, pas de problème, la méthode play() appelle elle-même une méthode calculateMyMove() qui renvoie un numéro de colonne après une analyse du jeu. Par contre, si c'est un objet Human, je ne sais pas du tout comment récupérer la valeur choisie par l'interface graphique.
J'ai pensée à faire une boucle infinie, en attendant que l'interface graphique rende son jugement mais je trouve ça un peu moisi et j'aimerais faire quelque chose de bien. Alors voilà, j'ai pensé aux threads...
Est-ce qu'il serait possible que mon objet Human "attende" la réponse de l'interface sans "bloquer" celle-ci ?
Partager