Développement d’une I.A. pour le jeu SNAKE

Projet d’algorithme DI3 2012 par Thibault DREVON thibault.drevon@etu.univ-tours.fr et Kévin GUÉGAN kevin.guegan@etu.univ-tours.fr

Le projet qui nous a été confié est un projet visant à améliorer une I.A. du jeu populaire connu sous le nom de Snake.

nokia_snake_29747
A Polytech Tours, le jeu Snake a été implémenté dans la “Poly’Clock” (une horloge composée d’un microcontrôleur Arduino et d’une matrice de LED).

En effet, l’I.A. est bel et bien déjà présente dans la “Poly’Clock”, mais dans une version trop basique et comportant quelques bugs.
Ce projet avait donc pour but d’améliorer I.A.  puis de l’implémenté dans la “Poly’Clock”.

P1050195

[…]
Pour assurer une bonne conception des structures et des algorithmes nécessaires à notre application, il faut avant tout explorer, comprendre et analyser les mécanismes
du jeu. Quelques parties permettent de distinguer les éléments suivants :

  • L’entité principale du jeu est le serpent. Il possède une queue de taille variable mais qui ne peut que grandir et non rétrécir. A chaque mouvement, le serpent choisit
    l’une des quatre directions cardinales et avance d’une case dans cette direction, c’est-à-dire que sa tête arrive sur la case en question et que la case sur laquelle
    se trouvait le bout de sa queue devient vide. Les autres parties de son corps ne bougent pas.
  • Les mouvements du serpent impliquent que son univers n’est pas continu mais discret. Il ne peut bouger que d’une case à une autre et ne peut pas rester entre deux cases.
  • L’environnement dans lequel le serpent évolue, le plateau, est un rectangle de largeur et hauteur définies dont le serpent ne peut s’échapper. Hauteur et largeur
    utiles sont réduites chacune de 2 puisque les murs font parties du plateau mais sont inaccessibles pour le serpent.
  • Il existe aussi un fruit/cible, disposé de façon aléatoire sur le plateau, mais qui ne peut apparaitre ni sur les murs ni sur un morceau de la queue du serpent. Lorsque le
    serpent mange un fruit, un autre est immédiatement généré et la taille du serpent augmente. Cette augmentation se déroule d’une façon précise : au coup suivant, la
    tête avance mais le bout de la queue n’est pas retiré.
    Enfin, la partie s’arrête lorsque le serpent entre en contact avec un morceau de sa queue ou avec un mur. Il faut donc conserver les positions de tous les points de la queue du serpent.

L’IA, puisque son objectif est de faire survivre et croitre le serpent le plus possible, devra trouver le coup le plus adapté à chaque situation et modifier la direction de
ce dernier en conséquence. Le détail de cette importante tâche est fait plus loin.
[…]


Projet d’algorithme DI3 2012 Polytech Tours par Polytech_Tours

En conclusion, la maitrise de l’horloge, l’Arduino, et la matrice de LED a représenté le premier chalenge, avec la complexité de son infrastructure ainsi que les outils de développements. L’étude du jeu, de ses failles actuelles, ainsi que la recherche d’optimisation, ont constitué le second chalenge de ce projet.
Nous avons au final intégré de nouveaux algorithmes dans l’IA, optimisant notamment les déplacements et la gestion de la mémoire, rationnalisant les structures
ainsi que le jeu lui-même.
Afin d’améliorer encore le coté ludique et visuel de la plateforme, nous aurions souhaité développer un second mode jeu appelé  “Tron” ou double serpent … mais par manque de temps ceci n’a pas pu se faire. Peut être lors d’un autre projet !
Enfin, ce  projet nous a permis d’appliquer les connaissances qui nous ont été inculquées au cours de notre première année à PolyTech Tours, ainsi que de nous initier encore plus
concrètement au travail en équipe, aux techniques de gestion de projet, et au respect d’un planning.

Télécharger le rapport

Laisser un commentaire