Algo minimax + Jeu de plateau

Projet 17

Caractéristiques

Description

Au semestre 3 à l'IUT informatique, nous avons eu des cours d'algorithmie avancée. Pour illustrer le cours, nous avons eu la présentation d'un jeu de plateau qui m'a semblé intéressant. Premièrement, j'ai voulu refaire ce jeu en utilisant Processing. Deux raisons à ce choix, il est très rapide d'obtenir un résultat, et on a accès à des fonctionnalités graphiques intéressantes, comme beaucoup de formes dessinables ou des shaders. Le principe du jeu de plateau est simple, il y a des cases reliées entre elles et des jetons noirs et blanc posés au hazard. Quand c'est le tour d'un des deux joueurs, il peut avancer son pion pour aller manger le pion adverse si sa case est connexe à une case occupée par ce pion ennemi. Il l'avance et mange le pion adverse. Puis c'est à l'autre joueur de jouer. A terme celui qui ne peut plus jouer à perdu.

En ayant fini de coder le jeu, je me suis amusé à ajouter des petits fonctionnalités comme le dark thème, que j'ai activé par défaut. Le dark mode c'est la vie ... si on aime prendre soin de ses yeux. J'ai aussi rajouter deux plateaux de jeux et j'ai rajouté la posibilité de jouer contre une IA. Avant de parler de l'IA, j'ai aussi utiliser une caractèristique que possède Processing et dont je viens de parler, les shaders. Je voulait voir la partie jouée (et terminée), sur l'écran de fin de partie. C'est à dire prendre une capture d'écran de la fin de match et le mettre en background de l'écran de fin de partie ne fonctionnait pas trop. L'image de fond était trop net. J'ai donc ajouté un shader qui rend floue une image avant de l'afficher.

Pendant le cours que nous avions eu, le jeu de plateau servait à illustrer un exemple d'algorithme minimax. J'ai donc voulu coder une IA qui prendrait ses decisions par rapport à un arbre de valeur contruit à partir des coups potentiellement joués. L'IA prendrait ses decisions avec les meilleurs coups tout en tenant compte du fait que nous fassions les meilleurs coup en tant que adversaire. Cependant pour avoir un arbre de valeur, encore faut-il avoir la valeur d'un plateau. J'ai écris quelques régles caché au joueur pour établir un score associé à chaque état de jeu. Notre victoire est la valeur minimal, la victoire de l'IA est la valeur maximal. Par exemple, des chaînes de pions apportent beaucoup de plus de score, pour celui dont on calcule le score, car les pions peuvent se venger. Au final l'IA fonctionne assez convenablement mais effectue ses calculs sur 5 coups, plus de profondeur provoque un ralentissement significatif de l'IA. Un autre calcul alternatif qui pourrait être mis en place est le calcul du nombre de pion prenable. Si il y a un nombre de pion pair qui sont prenable, ce n'est pas bon pour celui qui joue. Pour deux pions prenables, nous jouons, puis l'adversaire joue, enfin nous ne pouvons plus jouer; nous avons perdu.

Visuels - (cliquer pour ouvrir en grand)

Accueil du jeu. Choix des paramètres. Écran du plateau de jeu. Écran de fin de partie.

Hey test test