Programmez par plaisir! 30-07-2010
03:37
Réalisé à l'UPS.
UPS
Prog-Info > Projets > Le jeu de Chomp.

Le jeu de Chomp

Introduction
Description
Screenshots
Documentation
Téléchargements

Introduction

Le but de ce projet est d'implémenter un algorithme Alpha/Béta et de l'appliquer au jeu de chomp. C'est un jeu de plateau contenant m * n (colonnes * lignes) jetons. Deux adversaires jouent à tour de rôle. Celui qui prend le dernier jeton a perdu. Jouer c'est prendre tous les jetons au-dessus et à droite de celui qu'on choisit. Le système sera capable de jouer une partie contre un joueur humain via cet algorithme paramétré par la profondeur de l'arbre de recherche et une fonction d'estimation.

Top


Description

1. Algorithme Alpha/Béta

Fonction : estimation3

Arguments :
  noeud (* celui que l'on évalue *)
  mp (* borne inférieure de l'intervalle d'utilité et valeur courante de noeud *)
  b (* borne supérieure de l'intervalle d'utilité de noeud *)

Variables globales :
  n (* le nombre de fils du noeud à traiter *)
  i (* un compteur de boucle *)
  vloc (* pour sauvegarder des résultats *)

Valeur retournée :
  La valeur négamax du noeud argument

Algorithme :
  début
  si noeud est terminal
  alors estimation3 <- estimation initiale de cette feuille
  sinon
    début
    développer noeud; (* soit n le nombre de ses fils *)
    i <- 1
    tant_que i <= n et mp < b faire
      début
      vloc <- -estimation3(fi(noeud), -b, -mp);
      si vloc > mp
      alors mp <- vloc;
      i <- i + 1
      fin
    estimation3 <- mp
    fin
  fin


Le calcul de la valeur négamax d'un noeud n s'obtient en appelant estimation3(n, -inf, +inf).


2. Les règles du jeu de chomp

a) Le jeu se joue sur un tapis comportant un repère orthonormé. Sur ce tapis sont disposés tous les jetons de coordonnées (u, v) avec 1 <= u <= m et 1 <= v <= n où m et n sont supérieurs ou égaux à 1 et le produit m * n est strictement supérieur à 1.

Un jeu est donc caractérisé par le couple (m, n). En conséquence, on parlera d'un jeu de type m * n.

b) Les adversaires seront dénotés respectivement par A et B. Ils jouent à tour de rôle, A joue le premier.

c) Jouer c'est choisir un jeton de coordonnées (x, y) sur le tapis et prélever tous les jetons de coordonnées (x', y') situés sur le tapis tels que x' >= x et y' >= y.

d) C'est le joueur qui par son coup prélève le jeton de coordonnées (1, 1) qui perd.

Exemple de jeu de chomp 6x4.


3. Définition d'une heuristique

On peut démontrer qu'il existe une stratégie gagnante pour le premier qui joue dans le cas de tout jeu de type m * n (avec m * n > 1).
Cette stratégie gagnante est aisée à décrire dans les cas suivants :
jeu de type 1*n (ou m*1), de type 2*n (ou m*2), de type m*m.

Top


Screenshots

Screenshot1
Screenshot2

Top


Documentation

Sujet. (pdf) [ 349 Ko ]

Top


Téléchargements

Le code source (tar.gz) [13 Ko]
Le code source (zip) [18 Ko]

Contenu de l'archive : (cliquable)
ReadMe.txt, AlphaBeta1.ml, AlphaBeta2.ml, AlphaBeta3.ml, AlphaBeta4.ml, AlphaBetaTest.ml, ChompGraphic.ml, ChompGraphicTest.ml, Chomp.ml, ChompTest.ml, JeuDeCartes.ml

Top



[Plan Plan] [A propos A Propos] [ 661172 ]
Copyright ©2002-2009 Prog-info Tous droits réservés.