Contexte et objectifs
En première année de BUT Informatique, les cours de programmation en langage C abordaient les bases de l'algorithmique et des structures de données. Les enseignants ont proposé un projet concret pour mettre en pratique ces notions sur une durée de 2 mois.
L'objectif était de concevoir et développer un jeu de Sokoban complet en C, en suivant une méthode de développement itérative : produire une maquette, définir un cahier des tests, coder deux versions progressives du jeu et valider chaque fonctionnalité par des traces d'exécution.
J'ai décomposé le projet en fonctions indépendantes (affichage, déplacements, gestion des fichiers, vérification des conditions de victoire) et j'ai implémenté deux versions successives : la première avec les fonctionnalités de base, la seconde avec enregistrement et rechargement des parties. Chaque fonctionnalité a été validée sur le cahier des tests défini en amont.
Le projet a abouti à deux versions fonctionnelles du jeu, avec 6 niveaux de difficulté croissante testés et documentés. Cette SAE m'a permis de maîtriser la rigueur du cycle de développement complet (conception → code → test) et de consolider mes bases en C : tableaux 2D, fichiers, entrées clavier.
Étapes du projet
- 1Maquette — Conception sur papier de l'interface et de la logique du jeu avant toute ligne de code.
- 2Cahier des tests — Définition des cas de test à valider pour chaque fonctionnalité (déplacements, conditions de victoire, etc.).
- 3Algorithme et décomposition — Décomposition du problème en fonctions : affichage, déplacement du joueur, vérification des caisses, chargement de niveaux.
- 4Code source — Implémentation en C avec gestion des tableaux 2D, lecture de fichiers .sok et gestion des entrées clavier.
- 5Traces d'exécution — Vérification du bon comportement du programme sur les cas de test définis, avec correction des bugs identifiés.
Ce qui a été réalisé
- Affichage de la grille de jeu en console (tableaux 2D)
- Gestion des déplacements du joueur avec détection des collisions
- Poussée des caisses et vérification des conditions de victoire
- Chargement de niveaux depuis des fichiers .sok
- Enregistrement et rechargement des déplacements (version 2)
- 6 niveaux de difficulté croissante fournis et testés
- Détection de touches sans blocage (fonction kbhit)