Julien Jorge

Mon CV en ligne, en plus divertissant que la version papier.

Puissance 4

Présentation

L'écran titre du jeu
L'écran titre.

Alors là vous vous dites « c'est quand même bien moins beau que le Tetris » et vous avez raison. Cependant les objectifs n'étaient pas les mêmes. Une fois le minmax rodé sur le morpion, je me suis dit qu'il serait bien de faire un jeu dans lequel l'ordinateur ne pourrait pas dérouler tout le graphe du jeu dès le premier coup. Pour ne pas me retrouver avec une implémentation dépendante du rendu je l'ai d'abord écrit pour fonctionner dans une console. Puis j'ai repris ces sources pour ajouter une partie graphique.

Le puissance 4 est un jeu qui se joue à deux. Là encore c'est un jeu très connu et on ne peut pas dire que je fasse dans l'originalité.

Modes de jeu

En mode console

Le jeu en ligne de commande
Le jeu en ligne de commande

Vous choisissez au lancement la taille de la grille, le nombre de pions à aligner et la profondeur de la recherche (le jeu officiel a une grille de six lignes, sept colonnes et il faut y aligner quatre pions). Choisissez ensuite qui de vous ou de l'ordinateur commence à jouer et la partie débute. Placez votre prion dans une colonne en entrant son indice, la première a pour indice zéro. Entrez une valeur supérieure au nombre de colonnes pour quitter.

En mode graphique

L'interface du jeu
L'interface du jeu.

Vous choisissez au premier écran le mode de jeu : humain vs humain ou humain vs ordinateur ; le niveau de difficulté (qui correspond à la profondeur de recherche : facile, moyen et dur pour, respectivement, quatre, cinq et six) ; et qui de vous ou de l'ordinateur jouera en premier (sachant que quoi qu'il arrive vous serez le joueur jaune).

Intelligence artificielle

Si l'ordinateur crée une ligne, il gagne (score max). Si le joueur crée une ligne, l'ordinateur perd (score min). Sinon on calcule pour chaque paire de directions opposées autour du jeton joué (gauche droite, haut bas, etc.) le nombre de pions, de la couleur du joueur courant, à gauche (ou en haut) g et le nombre à droite (ou en bas) d. Puis selon que le joueur en cours soit l'humain ou l'ordinateur on soustrait ou on ajoute 2 x ( g x d + g + d ) + 1 points au score de l'état parent pour obtenir le score de l'état actuel. L'avantage est que le calcul ne porte que sur les cases concernées par le nouveau pion.

En gros on regarde la qualité des nouveaux alignements créés à l'aide du nouveau pion.

Ce qui est bien

J'ai pu réutiliser directement l'API, l'ensemble des classes, que j'avais écrite pour gérer les entrées, le son et le rendu du Tetris. L'ordinateur joue bien. Le code est bien structuré, la partie algorithmique est indépendante de la partie graphique.

Ce qui n'est pas bien

Je n'ai pas cherché à améliorer l'heuristique dès que j'en ai obtenu une qui offrait de bons résultats alors qu'il est sûrement possible d'affiner le calcul des points et éventuellement de réduire la profondeur de recherche.

Liens

Le source de la version console (28 Ko), Windows ou Linux, le source pour la version graphique (1,6 Mo), le même avec les ressources graphiques et sonores (8,21 Mo), le programme (5,7 Mo).