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.
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.
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.
Choisissez au moins une règle supplémentaire à intégrer dans votre projet :
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.
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.
Le rapport d'avancement prendra la forme d'un fichier PDF disponible avec les sources sur le serveur Gitea. Vous y inclurez en particulier :
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).