J'ai écrit un jeu de morpion en Java, et ma méthode actuelle pour déterminer la fin de la partie tient compte des scénarios possibles suivants pour la fin de la partie :
- Le plateau est plein, et aucun gagnant n'a encore été déclaré : La partie est nulle.
- Cross a gagné.
- Le cercle a gagné.
Malheureusement, pour ce faire, il lit un ensemble prédéfini de ces scénarios dans un tableau. Ce n'est pas forcément mauvais, étant donné qu'il n'y a que 9 cases sur un plateau, et que le tableau est donc un peu petit, mais existe-t-il un meilleur moyen algorithmique de déterminer si la partie est terminée ? Déterminer si quelqu'un a gagné ou non est le cœur du problème, puisque vérifier si 9 cases sont pleines est trivial.
La méthode des tables pourrait être la solution, mais si ce n'est pas le cas, qu'est-ce qui l'est ? De même, que se passerait-il si le tableau n'était pas de taille n=9
? Et s'il s'agissait d'un tableau beaucoup plus grand, par exemple n=16
, n=25
et ainsi de suite, ce qui fait que le nombre d'éléments placés consécutivement pour gagner est de x=4
, x=5
etc. Un algorithme général à utiliser pour tous les n = { 9, 16, 25, 36 ... }
?
1 votes
J'ajoute mes 2 centimes pour toutes les réponses : Vous savez toujours qu'il vous faut au moins un certain nombre de X ou de O sur le plateau pour gagner (dans un plateau 3x3 normal, c'est
3
). Ainsi, vous pouvez suivre les comptes de chacun et ne commencer à vérifier les gains que s'ils sont plus élevés.