Dans ce projet vous aurez à réaliser un jeu où deux joueurs se déplacent sur une grille en tentant de se bloquer mutuellement.
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 obligatoirement en binôme (ou seul si vous obtenez l'autorisation de Luc Hernandez dès la première semaine), et se terminera impérativement avant le dimanche 24 novembre 2024 à 23:59.
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 carrée dont la taille sera choisie à chaque partie entre 3 et 9. L'un après l'autre les deux joueurs choisissent une case où placer leur pion (les deux pions ne peuvent pas partager la même case).
Une fois le terrain mis en place, les joueurs alternent les tours. Durant le tour d'un joueur, il doit déplacer son pion vers une case adjacente (y compris en diagonale), puis choisir une case libre qui sera condamnée. Le premier joueur qui ne peut pas déplacer son pion (car toutes les cases adjacentes sont condamnées ou occupées) a perdu.
L'interface du jeu sera contrôlée entièrement à la souris et consistera en trois écrans. Le premier écran proposera de choisir la taille du terrain de jeu, et de démarrer une partie à un ou deux joueurs. Le deuxième écran permet de jouer la partie. Le troisième écran affiche le gagnant et permet de choisir entre terminer le programme et lancer une nouvelle partie.
Dans une partie à un seul joueur, le programme simule le deuxième joueur. Il n'a pas besoin de jouer brillamment, mais ses choix doivent respecter les règles du jeu.
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
Grond. Votre dépôt sera privé,
nommé obligatoirement SAE11_2024
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 Grond. 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).