2008-12-10 4 views
0

J'essaie d'écrire une IA simple pour un jeu "Get four". Les principes du jeu de base sont faits, donc je peux lancer des pièces de couleur différente, et ils s'empilent les uns sur les autres et remplissent un tableau 2D et ainsi de suite. jusqu'à maintenant ce que la méthode ressemble à:Comment évaluer une situation de connexion de quatre jeux en java

public int insert(int x, int color) //0 = empty, 1=player1 2=player2" 

X est la coordonnée horizontale, la coordonnée y est déterminée par combien de pierres sont dans le tableau déjà, je pense que l'idée est évidente. Maintenant, le problème est que je dois évaluer des situations de jeu spécifiques, alors trouvez combien de nouvelles paires, triplets et éventuellement 4 de suite je peux obtenir dans une situation spécifique pour ensuite donner à chaque situation une valeur spécifique. Avec ces valeurs, je peux configurer un "arbre de jeu" pour ensuite décider quel mouvement serait le meilleur suivant (plus tard sur l'implémentation de l'Alpha-Beta-Pruning). Mon problème actuel est que je ne peux pas penser à un moyen efficace d'implémenter une évaluation de la situation actuelle du jeu dans une méthode java.
Toutes les idées seraient grandement appréciées!

Répondre

4

Je suppose que c'est un travail à faire, et que vous voulez dire que vous voulez écrire la fonction d'évaluation et ne savez pas quelles astuces utiliser? Le jeu est appelé "Connect 4" en anglais, donc vous pouvez google pour "connecter 4 fonction d'évaluation".

Vous pouvez trouver assez de personnes heuristiques de discussion.

S'il vous plaît ne pas copier un code source, il est un exercice important :)

+0

-1 Je ne comprends pas comment cela a été amélioré. Dire à quelqu'un d'utiliser Google n'est pas une réponse. Je peux vivre avec des liens vers Wikipedia mais ce n'est pas acceptable pour moi. –

+0

Une phrase googleable est utile à certains moments et si vous regardez l'histoire, alors vous verrez que la question à l'origine ne contenait pas l'expression "Connect 4". –

+0

Je suis celui qui l'a édité dans le nom correct du jeu, qui a semblé être le problème principal qu'il avait. Par conséquent, je lui ai dit quel était le nom correct et où le chercher. – Uri

1

L'espace de recherche pour Connect 4 n'est pas incroyablement grand. Pour une implémentation simple, bien que cela prenne un peu de temps (peut-être des dizaines de minutes) à faire une recherche minimax jusqu'à ce que quelqu'un gagne, ou que le jeu se termine. Attribuez +1 ou -1 pour une victoire pour un joueur ou l'autre et 0 pour un match nul.

+0

Avec un programme hautement optimisé comme Fhourstones (http://homepages.cwi.nl/~tromp/c4/fhour.html) il vous faudrait environ 10 minutes pour résoudre le jeu du début à la fin. Performance pour 8+ les mouvements sont meilleurs, mais pas tout à fait rapides, en particulier quand on utilise un algorithme sous-optimal. – Tim

0

bollocks. l'espace de recherche est énorme. vous devez utiliser une table prédéfinie si vous voulez le faire.

Questions connexes