Création d'un jeu de société AI

9

Je veux coder un jeu de société dont le nom est Okey et qui est surtout populaire en Turquie. http://en.wikipedia.org/wiki/Okey

Mais j'ai des problèmes avec l'IA.

Firslty permettez-moi d'expliquer le jeu ..

Le jeu est joué par 4 joueurs.

Dans ce jeu, il y a 106 tuiles, 2 d'entre elles sont de faux joker. Les 104 autres tuiles sont divisées en 4 couleurs généralement vertes, noires, bleues et rouges. Toutes les couleurs ont deux ensembles de tuiles. Un ensemble ise contient 13 tuiles numérotées séquentiellement de 1 à 13.

Chaque joueur commence 14 tuiles (une commence 15 et commence en premier) et lance l'une des tuiles les plus indésirables au joueur suivant. Le joueur suivant peut obtenir cette tuile ou obtenir une autre tuile de la pile au milieu de la table. Le jeu a joué dans le sens antihoraire ..

Le but de ce jeu est de trouver la séquence valide de 14 tuiles dès que possible. Le joueur peut aligner les tuiles par des numéros séquentiels de la même couleur jusqu'à 13. Par exemple Green 1, Green 2, Green 3. Il y a une exception ici, 1 peut être suivi de 13. Par exemple Red 12, Red 13 et Red 1 est un ensemble valide. Mais Red 13, Red 1 et Red 2 n'est pas valide.

Ou le joueur peut aligner les tuiles par couleurs dans le même nombre. Par exemple vert 1, noir 1, rouge 1, bleu 1.

Chaque ensemble doit être composé de 3 tuiles ou plus pour être valide et chacun de cet ensemble doit être nommé "Per". Moins de 3 tuiles n'est pas valable pour la finition. Un ensemble de finition valide peut ressembler à ceci. G: Vert, B: Bleu, R: Rouge, BL: Noir G1 | G2 | G3 B2 | R2 | BL2 R9 | R10 | R11 | R12 BL13 | R13 | G13

Dernière chose, au début du jeu, une tuile sélectionnée pour déterminer le joker (okey). Par exemple, si vous sélectionnez Bleu 3; Blue 4 sera joker (okey) et le joueur peut utiliser cette tuile à la place de n'importe quelle tuile dont le joueur a besoin pour gagner ou compléter un ensemble (par).

Bien sûr, ces règles sont des règles générales et résumées pour expliquer la question. Si vous pouvez lire l'anglais, vous pouvez consulter ce lien pour plus d'informations http://tr.wikipedia.org/wiki/Okey ou page traduite par Google Translate http://translate.google.com/translate?js=n&prev=_t&hl= en & ie = UTF-8 & layout = 2 & eotf = 1 & sl = tr & tl = en & u = http: //tr.wikipedia.org/wiki/Okey

Alors, quel algorithme d'IA que je peux utiliser? J'ai recherché la théorie minimax et l'élagage alpha beta. Mais ces théories concernent généralement 2 joueurs comme les échecs ou le tic-tac-toe.

La question d'origine est à stackoverflow: /programming/4419628/creating-a-board-game-ai

bahadir arslan
la source
1
Vous pouvez utiliser de nombreux algorithmes d'IA, donc "lequel" est un compromis de conception (ou éventuellement d'ingénierie). Voulez-vous une IA "parfaite" qui puisse "résoudre" le jeu (c'est-à-dire jouer de manière optimale)? Ou voulez-vous une IA "de jeu" qui joue suffisamment bien pour ne pas s'embarrasser, mais suffisamment faible pour être battable (surtout si vous voulez plusieurs niveaux de difficulté)? Ou voulez-vous simplement une IA "stupide" qui joue sans logique pour que vous puissiez tester le jeu? Beaucoup de choix, aucun intrinsèquement bon ou mauvais.
Ian Schreiber
Je pense que vous auriez besoin d'un algorithme développé spécifiquement pour ce problème, bien que vous puissiez utiliser différentes techniques / algorithmes. Vous pourriez obtenir une bonne réponse sur ai.stackexchange.com
Matthew Lire
@Ian, je veux que l'IA puisse jouer au jeu lui-même acceptable. Peut-être plus tard, je peux ajouter des niveaux de difficulté. J'ai donc besoin d'un point de départ. @Matthew j'y ajouterai ma question. Merci à tous.
bahadir arslan
Aie! On dirait que ai.stackexchange.com a été fermé, bien que cela aurait été l'endroit idéal pour demander ... triste.
bummzack
Les versions multijoueurs bien connues de minmax sont MaxN et Paranoid Search
Druzil

Réponses:

3

Si vous échangez des tuiles contre des cartes, la description du jeu semble incroyablement similaire au jeu de cartes Gin Rummy. Vous pourrez peut-être trouver des ressources d'IA directes en recherchant cela.

Une option pour l'IA qui est indépendante du nombre de joueurs et peut être utilisée pour créer différentes personnalités de l'IA:

  1. Jouez au jeu de société, idéalement avec des amis, bien que vous puissiez jouer toutes les mains vous-même, mais avec un ordinateur à portée de main et Excel ouvert.
  2. Exprimez-vous, chargez votre processus de réflexion. Il y aura un certain nombre de points discrets que vous considérerez lors de la prise de décision. Des choses comme "la tuile indésirable me donne-t-elle un ensemble jouable", ou "me rapproche-t-elle d'un ensemble", ou "ajoute-t-elle à un ensemble jouable existant".
  3. Ensuite, une fois que vous avez la liste de tous les éléments que vous considérez lorsque vous décidez de la tuile à ramasser et de la tuile à jeter, commencez à créer des poids numériques pour eux en fonction de ce qui est le plus important pour vous.
    1. Exemple: il peut être trois fois plus important pour vous d'obtenir la 3e tuile d'une séquence que d'obtenir la 4e tuile d'une séquence existante.
  4. Une fois que vous avez tous ces poids pour toutes les choses que vous regardez lorsque vous prenez une décision, vous pouvez utiliser Excel pour calculer un score pour chaque action. Vous avez donc une feuille de calcul où chaque ligne représente un choix d'action et chaque colonne représente un facteur décisif. Si ce facteur est vrai pour cette action, vous le multipliez par le poids, si ce facteur est faux, vous le marquez zéro. Ensuite, vous additionnez tous les scores et celui avec la valeur la plus élevée est ce que l'IA choisira de faire.
  5. Jouez au jeu avec Excel ouvert. À chaque tour, voyez si le résultat du score correspond au résultat que vous choisiriez. S'il n'ajuste pas les poids en fonction de votre réflexion jusqu'à ce qu'il le fasse. Après plusieurs matchs, l'IA devrait jouer le jeu de la même manière que vous. Si vous jouez régulièrement avec un groupe d'amis qui ont tous des poids différents, vous aurez des IA avec différentes personnalités.

Vous pouvez ensuite contrôler la difficulté en ne sélectionnant pas toujours l'option la mieux notée. Comme plus le score est bas, plus la décision est mauvaise.

wkerslake
la source
Voici un article sur la création d'IA pour Gin Rummy. Cela pourrait s'avérer utile. aifactory.co.uk/newsletter/2007_02_imperfect_info.htm
Tim Holt
Je vais regarder cela dès que possible. Merci @Tim Holt et @skerslake
bahadir arslan
Je chercherais également des stratégies MahJongg. Ce n'est pas aussi étroitement lié, mais il est toujours proche.
Loren Pechtel