jeu du Labyrinthe Via console un jeu fun et divertissant construit grâces au principes simple du langage c# image de mes premier pas dans ce langage
Le Labyrinthe est un jeu d'aventure en console où vous devez naviguer à travers 20 niveaux générés procéduralement, chacun avec sa propre difficulté et ses mécaniques uniques.
Trouvez les clés, évitez les pièges, utilisez des téléporteurs et des pioches pour progresser jusqu'à la victoire finale !
- Génération procédurale : Chaque partie est unique
- Progression dynamique : 20 niveaux avec difficulté croissante
- Mécaniques évolutives : Débloquez de nouveaux éléments tous les 3-4 niveaux
- Système de vie : Gérez vos points de vie stratégiquement
- Boss final : Niveau 20 avec mécanique spéciale chronométrée
| Niveau | Nouveautés |
|---|---|
| 1–6 | Bases : Labyrinthe, clés, sortie |
| 7+ | 🔴 Cases de la mort (dégâts) |
| 10+ | ❤️ Cœurs de vie (récupération) |
| 14+ | 🔵 Téléporteurs (déplacement instantané) |
| 18+ | ⛏️ Pioches (casser les murs) |
| 20 | ⏱️ Niveau final chronométré avec danger progressif |
| Élément | Détails |
|---|---|
| Taille | Grille de 15×15 à 21×21 |
| Obstacles | 40 à 90 blocs selon le niveau |
| Clés | 1 à 3+ clés à trouver |
| Difficulté | Augmente tous les 3 niveaux |
- .NET Framework 4.7.2+ ou .NET 5.0+
- Windows, Linux ou macOS avec support console
# Cloner ou télécharger les 5 fichiers
git clone [votre-repo]/labyrinthe.git
cd labyrinthe
# Compiler
dotnet build
# Exécuter
dotnet run| Touche | Action |
|---|---|
| ↑ | Déplacer vers le haut |
| ↓ | Déplacer vers le bas |
| ← | Déplacer vers la gauche |
| → | Déplacer vers la droite |
| K | Recommencer le niveau |
| S | Sauter à un niveau spécifique (debug) |
| Symbole | Signification |
|---|---|
| P | Joueur |
| K | Clé |
| # | Mur |
| _ ou | Sortie |
| __ | Case de la mort |
| __ | Téléporteur |
| 7 | Pioche |
| V | Cœur de vie |
Collecter toutes les clés du niveau Atteindre la sortie (_ ou | ) Survivre en gérant vos vies Progresser jusqu'au niveau 20
L’organisation du projet suit une logique modulaire inspirée des bonnes pratiques C# : chaque composant a une responsabilité claire (affichage, logique, données, etc.).
Labyrinthe/
│
|
├── Demo/ # Dossier de démonstration et tests manuels
| # Exemple de rendu et interaction visuelle
│
├── Display.cs # Gère tout l'affichage graphique et la fenêtre principale
├── GameData.cs # Stocke les données persistantes du jeu (scores, états, etc.)
├── GameLogic.cs # Contient la logique centrale du gameplay et des règles
├── LabyrinthGenerator.cs # Algorithmes de génération procédurale des labyrinthes
│
├── Program.cs # Point d’entrée principal du programme
│ # Initialise les composants et lance l'application
│
├── Labyrinthe.csproj # Fichier de configuration du projet C#
├── Labyrinthe.sln # Solution Visual Studio regroupant l'ensemble des projets
│
├── bin/ # Fichiers binaires compilés (Debug / Release)
└── obj/ # Fichiers temporaires de compilation-
Architecture procédurale modulaire : séparation claire des responsabilités
-
Pas d’orienté objet : logique purement procédurale optimisée
-
Gestion d’état centralisée : toutes les données dans GameData
-
Algorithmes optimisés : génération rapide et validation efficace
//Génération intelligente avec exclusions Position TrouverPositionValide
(params List<Position>[] exclusions);
// Placement automatique des éléments :
PlacerJoueur();
PlacerCles();
PlacerObstacles();
//Assure l'accessibilité de la sortie
AssurerAccessibiliteSortie();// Mise à jour dynamique tous les 3 niveaux
MettreAJourDifficulte(int niveau);
// Configuration adaptative
// - Taille de grille : 15 → 21
// - Obstacles : 40-50 → 70-90
// - Cases mort : 0 → 8-18
// - Téléporteurs : 0 → 2-6
// - Pioches : 0 → 1-7// Danger progressif chronométré
GererMecaniqueNiveau20();
// Toutes les 30 secondes, une ligne devient mortelle
// Pression croissante du bas vers le haut========================================================
|| | LE LABIRYNTHE | ||
========================================================
|| BIENVENUE MON CHER AMI ||
|| CECI EST UN PETIT JEU AMUSANT ||
========================================================
# # # # # # # # # # # # #
# K # # #
# # # # # # # # # #
# P # K #
# # # # # # # # # # # # #
========================================================
|| Nombre de vie : v v v Niveau : 5 Cles : 1/2 ||
========================================================| Élément | Valeur |
|---|---|
| Lignes de code | ~500 (optimisé depuis 1200) |
| Réduction de complexité | 70% |
| Modules | 5 fichiers spécialisés |
| Performance | Génération instantanée (<100ms) |
| Rejouabilité | Infinie (génération procédurale) |
Aucun bug majeur connu dans la version 2.0 refactorisée.
-
Sauvegarde de progression
-
Système de score
-
Générateur de seed pour grilles reproductibles
-
Mode multijoueur
-
Éditeur de niveaux
| Action | Résultat |
|---|---|
| Élimination de 27 variables globale | structure centralisée |
| Unification des déplacements | 600 lignes → 50 lignes |
| Fonctions de validation | 5 versions → 1 générique |
| Affichage modulaire | 3 copies → 1 paramétrable |
| Algorithme de placement | Évite les boucles infinies |
-
DRY : Don’t Repeat Yourself
-
Séparation des responsabilités : chaque module a un rôle unique
-
Validation stricte : toutes les entrées sont vérifiées
-
Gestion d’erreurs : aucun plantage possible
Ce projet est fourni à des fins éducatives et de démonstration.
Entièrement réaliser par Moi : Kryss Rayane Sampi Nana
| Étape Principale | Description | Objectifs Clés | Livrables / Résultats |
|---|---|---|---|
| Conception Mentale | Phase de réflexion initiale où l’idée brute est structurée. On établit le cahier des charges, on visualise le produit final, et on crée une carte mentale pour relier les concepts. | - Définir la vision globale du projet - Identifier les besoins réels et les contraintes - Clarifier les fonctions essentielles |
- Cahier des charges clair et hiérarchisé - Schémas et mind maps - Vision conceptuelle aboutie |
| Maquettage Visuel | Création de maquettes et prototypes statiques permettant de visualiser la disposition générale, la navigation, les composants clés et le ton visuel du produit. | - Définir la direction artistique et UX - Obtenir une vue d’ensemble claire du futur produit - Préparer la base du design interactif |
- Maquettes (Figma, Adobe XD, ou papier) - Palette de couleurs et typographies - Grilles et disposition des sections |
| Réalisation Graphique & Animation Visuelle | Implémentation des interfaces graphiques (UI) et des animations sans logique interne (no-mechanism). On travaille sur le rendu visuel, les transitions et l’ergonomie. | - Donner vie à la maquette - Tester l’esthétique et la fluidité visuelle - S’assurer de la cohérence stylistique |
- Interfaces fonctionnelles (front-end, XAML, CSS, etc.) - Animations, transitions et effets - Design stable et interactif |
| Implémentation des Mécanismes & Cœur du Programme | Développement de la logique interne : base de données, gestion d’état, algorithmes, et intégration entre l’interface et le backend. | - Structurer le cœur logique du système - Garantir la performance et la stabilité - Centraliser les données et interactions |
- Code source stable et modulaire - Base de données fonctionnelle - Mécanismes et API opérationnels |
| Tests & Polissage Final | Étape de test approfondi et de correction. On explore la majorité des cas d'utilisation possibles, puis on ouvre le projet à une communauté restreinte pour recueillir des retours. | - Déceler les bugs et incohérences - Ajuster le rendu visuel et l’expérience utilisateur - Stabiliser le produit avant diffusion |
- Rapport de test et correctifs - Version stable (v1.0+) - Interface polie et réactive |
| Publication & Partage | Mise en ligne du produit final et partage avec le public ou un cercle professionnel. Cette phase marque la transition vers l’usage réel. | - Diffuser le travail accompli - Obtenir des retours d’expérience - Débuter l’utilisation régulière et la maintenance |
- Version publique du projet - Documentation claire - Utilisation continue et mises à jour futures |
" De la vision à la réalité, chaque étape est une brique de maîtrise. "
- Ouvrir une issue sur GitHub
- Consulter la documentation dans les commentaires du code
- Chaque fonction est documentée avec XML comments


