====== Snake sans programmation objet ====== Dans ce TD, on veut programmer un jeu de **snake** en tkinter, sans programmation objet. Téléchargez et décompresser les fichiers du projet : {{ :nsi:tds:jeux:snake.zip |}} === Principe général === Un serpent se déplace dans un espace 2D. On peut le commander avec les flèches du clavier. Chaque fois qu'il mange une pomme, il s'allonge et le joueur gagne des points. La partie s'arrête si le serpent percute un mur où si sa tête percute un de ses anneaux. === Fichier walls.txt === Rien à faire. Ce fichier décrit la surface de jeu. Vous pourrez le modifier si cela vous amuse, mais ce n'est pas essentiel. === Fichier affichage.py === Ce fichier contient tout ce qui concerne l'affichage : * création de la fenêtre tkinter, les textes, la zone de dessin... * ouverture et analyse du fichier ''wall.txt'' pour savoir où sont les murs, les pommes initiales et la tête du serpent. * fonctions d'affichage. La zone de jeu est constamment effacée et redessinée pour assurer l'animation. On aura donc des fonctions d'affichage : * pour les murs (déjà fait, sert de modèle) * pour le serpent lui même (à faire) * pour les pommes (à faire) Il y a d'autres fonctions, tout est documenté, vous pouvez regarder... === Fichier snake.py === Ce fichier contient ce qui concerne le déroulement du jeu. * ''bouge'' : fonction qui calcule la nouvelle position du serpent et de ses anneaux tenant compte de sa direction actuelle. (à faire) * ''mange_pomme'' : fonction qui vérifie si une pomme est mangée. (à faire) * ''collision'' : fonction qui test si le serpent a percuté un mur ou un de ses anneaux. (à faire) * Les fonctions réagissant aux demandes de changement de direction. === Fichier main.py === Partie principale. On y trouve essentiellement la fonction ''rafraichir'' qui est rappelée constamment pour mettre à jour l'état du jeu. (à compléter) Enfin, dans ''main.py'', on trouve la gestion des événements clavier (à compléter également).