Jouer à la démo en ligne dans le navigateur !
Développement d'un jeu de réflexion "Net" en C, réalisé dans le cadre de ma Licence Informatique à l'Université de Bordeaux. L'objectif du jeu est de faire pivoter des pièces sur une grille pour connecter tous les câbles en un seul réseau continu, sans boucles.
Ce projet m'a permis de développer et de mettre en pratique des concepts avancés en algorithmique et en architecture logicielle :
- Moteur logique en C : Gestion complète des états du jeu avec une architecture modulaire.
- Génération procédurale : Algorithme de génération de grilles aléatoires garantissant l'existence d'au moins une solution (basé sur la théorie des graphes).
- Solveur algorithmique : Implémentation d'un solveur par backtracking capable de résoudre n'importe quelle grille et de compter le nombre total de solutions possibles.
- Portage WebAssembly (Emscripten) : Compilation du moteur C en
.wasmpour rendre le jeu jouable directement dans un navigateur Web avec une interface JS/HTML/CSS responsive. - Client lourd (SDL2) : Application bureau native avec interface graphique soignée et animations fluides.
- Historique des coups (Undo/Redo) : Implémentation d'une structure de données de type Double-ended queue (Deque) pour annuler et refaire des actions à l'infini.
- Tests & Intégration : Mise en place d'un build automatisé avec CMake et de tests unitaires avec CTest.
- Compilateur C (GCC / Clang)
- CMake (>= 3.5)
- Bibliothèques SDL2 :
SDL2,SDL2_image,SDL2_ttf
# Cloner le dépôt
git clone https://github.com/msq15/Net-Game.git
cd Net-Game
# Créer le répertoire de build et compiler
mkdir build && cd build
cmake ..
make
# Lancer la version Graphique (SDL2)
./game_sdl
# Lancer la version Terminal (CLI)
./game_textPour générer la version Web, il faut disposer du SDK Emscripten (emcc).
cd web
makeCela générera les fichiers game.wasm et game.js. Il suffit ensuite d'ouvrir game.html via un serveur local (ex: python3 -m http.server).
| Action | Souris | Clavier |
|---|---|---|
| Pivoter sens horaire | Clic gauche | |
| Pivoter sens anti-horaire | Clic droit | |
| Générer une nouvelle partie | N |
|
| Mélanger la grille | R |
|
| Résoudre la grille | S |
|
| Annuler (Undo) | Z |
|
| Refaire (Redo) | Y |
|
| Quitter | Q |
