Le jeu du serpent

Dans ce projet vous aurez à réaliser une version du Snake. Le joueur y contrôle un serpent toujours en mouvement qui doit manger des pastilles sans percuter les limites du terrain ou sa propre queue.

capture d'écran d'un jeu du serpent

Vous produirez un programme écrit en C89, sans emprunt extérieur (sauf la bibliothèque graphique de l'IUT), et accompagné d'un rapport. Le travail sera fait seul ou en binôme, et devra être terminé avant le dimanche 24 décembre 2023 à 23h59.

La partie logicielle sera développée dès le départ dans un dépôt dédié du serveur Gitea du département. Le rapport prendra la forme d'un fichier au format PDF joint aux sources.

Règles du jeu

Le terrain de jeu prend la forme d'une grille de 40 lignes par 60 colonnes. 5 pastilles de la taille d'une case y sont placées aléatoirement. Un serpent formé de 10 segments (également de la taille d'une case) est placé au milieu.

Le serpent avance sans cesse : pour cela on ajoute un segment en tête et on enlève un segment en queue. Si la case où on doit ajouter un segment est en dehors du terrain ou déjà occupée par un segment, la partie est terminée. Si on ajoute un segment par dessus une pastille, elle est «mangée». Une nouvelle pastille est placée sur une autre case libre choisie aléatoirement, et le serpent s'allonge de 2 segments.

Le joueur peut changer la direction du serpent à l'aide des touches directionnelles . Il peut quitter la partie avec la touche Esc, et mettre le jeu en pause avec la touche Espace (il met fin à la pause en rappuyant sur Espace).

En dehors du terrain de jeu, le joueur peut voir le temps écoulé et le score actuel. Le score sera égal à 5 fois le nombre de pastilles consommées. Ces informations devront être encore visibles après la fin de la partie afin que le joueur puisse juger sa performance.

Variantes

Choisissez au moins une règle supplémentaire à intégrer dans votre projet :

  • Le terrain de jeu comporte des obstacles (fixes ou mobiles) que le serpent doit éviter.
  • Le déplacement du serpent s'accélère en fonction du score ou du temps écoulé.
  • Les serpents préfèrent leurs proies vivantes : les pastilles peuvent se déplacer de temps en temps.
  • Plusieurs variétés de pastilles sont possibles et chacune a un effet différent.

Vous pouvez introduire une variante de votre invention pourvu qu'elle représente un travail équivalent. Dans tous les cas, le jeu ne doit pas devenir frustrant ou insurmontable.

Sources

Les sources de votre projet (et pas les fichiers générés .o ou .out) devront être disponibles dès le début du développement sur le serveur Gitea du département. Votre dépôt sera privé, nommé obligatoirement SAE11_2023 et incluera Luc Hernandez (login : hernand) dans la liste des collaborateurs. Votre utilisation de ce service sera contrôlée et comptée dans la note.

Votre code devra être raisonnablement divisé en fonctions et en fichiers. Commentez chaque fonction pour en décrire l'usage. Suivez les consignes habituelles scrupuleusement.

Un fichier Makefile devra permettre la compilation de votre projet (par la commande make) ainsi que son exécution (par la commande make run). Transcrivez bien toutes les dépendances entre vos fichiers dans les règles.

Rapport

Le rapport d'avancement prendra la forme d'un fichier PDF disponible avec les sources sur le serveur Gitea. Vous y inclurez en particulier :

  • une introduction contenant une brève description du sujet (avec vos propres mots).
  • la description des fonctionnalités de votre programme, aidée de captures d'écran,
  • une justification du découpage en différents fichiers source, avec diagramme à l'appui,
  • une explication des données qui représentent le serpent dans votre programme, et des transformations que celles-ci peuvent subir au cours de la partie,
  • une conclusion personnelle pour chaque auteur (évitez les platitudes).

Soignez la présentation ! L'orthographe, la grammaire, les pages de garde, la table des matières, les en-tête et pieds de page ne sont pas en option...

Notez bien que le rapport ne doit pas contenir d'extrait du code source du projet, étant donné que le correcteur peut aller le consulter directement s'il en éprouve le besoin. N'hésitez pas en revanche à illustrer vos propos par des schémas. Ceux-ci peuvent être construits directement dans le logiciel de traitement de texte s'il le permet, ou dans un logiciel dédié, tel que Inkscape ou Draw (tous deux gratuits).

retour à la page d'accueil

retour au sommet