Repo pour Jeu python avec TKInter - Jeu Master Mind

@Claude Claude authored 15 days ago
src fix: correction de l'import messagebox dans la fenêtre statistiques 15 days ago
.gitignore feat: Ajout du système de statistiques complètes 15 days ago
README.md feat: Initial commit - MasterMind game implementation 15 days ago
README.md

MasterMind

Implémentation élégante du jeu de logique classique en Python avec interface Tkinter.

Python License


📋 Description

MasterMind est un jeu de logique et de déduction où le joueur doit deviner un code secret composé de 4 couleurs parmi 6 possibilités. À chaque tentative, le jeu fournit un feedback indiquant le nombre de couleurs correctement placées (noirs) et le nombre de couleurs présentes mais mal placées (blanches).

Cette implémentation offre une interface graphique soignée avec des boutons octogonaux Originaux, un historique scrollable des tentatives, et une expérience utilisateur fluide.


🎮 Règles du Jeu

Configuration Standard

  • Code secret: 4 positions
  • Couleurs disponibles: 6 (Rouge, Bleu, Vert, Jaune, Orange, Violet)
  • Tentatives maximum: 15
  • Répétition de couleurs: Autorisée

Déroulement d'une Partie

  1. Le jeu génère aléatoirement un code secret de 4 couleurs.
  2. Le joueur sélectionne ses 4 couleurs en cliquant sur les cercles ou en utilisant la palette.
  3. En validant, le joueur reçoit le feedback:
    • ⬛ Noir: Bonne couleur, bonne position
    • ⬜ Blanc: Bonne couleur, mauvaise position
  4. Le joueur continues jusqu'à:
    • Trouver le code (victoire)
    • Épuiser les 15 tentatives (défaite)

Commandes de l'Interface

  • Clic sur les cercles: Cycle à travers les couleurs (par position)
  • Clic sur la palette: Applique la couleur sélectionnée à toutes les positions
  • Valider: Soumet la tentative actuelle
  • Rejouer: Commence une nouvelle partie
  • Solution: Révèle le code secret (mode triche)

🚀 Installation et Utilisation

Prérequis

  • Python 3.7 ou supérieur
  • Tkinter (inclus dans la distribution standard Python)

Installation

# Cloner le dépôt (si applicable)
git clone <repository-url>
cd Master_Mind

# Aucune dépendance externe n'est nécessaire!
# Tkinter est inclus avec Python

Lancement du Jeu

cd src
python main.py

Ou directement:

python src/main.py

🏗️ Structure du Projet

Master_Mind/
├── src/
│   ├── main.py          # Point d'entrée de l'application
│   ├── game_logic.py    # Moteur de jeu (logique pure)
│   ├── gui.py           # Interface graphique Tkinter
│   ├── config.py        # Configuration centralisée
│   └── requirements.txt # Dépendances (toutes facultatives)
├── data/
│   └── Master_mind.png  # Icône de l'application
├── .gitignore           # Exclusions pour Git
└── README.md            # Ce fichier

🎨 Architecture Technique

Séparation des Responsabilités

Le projet suit une Architecture Moderne avec séparation claire:

  • game_logic.py: Moteur de jeu indépendant, testable sans interface
  • gui.py: Vue qui utilise l'API du moteur
  • config.py: Configuration centralisée pour personnalisation facile

Design Patterns

  • MVC inspiré: Modèle (game_logic), Vue (gui), Contrôleur (événements)
  • Configuration Centralisée: Tous les paramètres dans config.py
  • Type Hints: annotations de type Python pour la clarté

⚙️ Personnalisation

Tous les paramètres du jeu sont dans src/config.py:

CODE_LENGTH = 4        # Longueur du code secret
MAX_ATTEMPTS = 15      # Nombre de tentatives
NUM_COLORS = 6         # Nombre de couleurs dans la palette

# Palette de couleurs (nom, hex)
COLORS = [
    ('Rouge', '#FF0000'),
    ('Bleu', '#0000FF'),
    # ... ajoutez vos propres couleurs
]

# Dimensions de l'interface
CIRCLE_DIAMETER = 30   # Taille des cercles de sélection
WINDOW_WIDTH = 450    # Largeur de la fenêtre
WINDOW_HEIGHT = 800   # Hauteur de la fenêtre

🧪 Tests

Le fichier game_logic.py inclut un test simple en __main__:

python -m src.game_logic

Pour des tests complets, il serait judicieux d'ajouter pytest et d'écrire une suite de tests unitaires couvrant:

  • Génération du code secret
  • Calcul du feedback
  • Gestion des tentatives
  • Conditions de victoire/défaite

📦 Dépendances

État actuel: Aucune dépendance externe n'est requise.

Le fichier requirements.txt contient initialement des bibliothèques courantes pour projets Python data/science. Pour ce jeu spécifique, seul Tkinter est nécessaire (inclus avec Python).

Si vous souhaitez étendre le projet avec des fonctionnalités web, bases de données, ou analytics, vous pouvez utiliser les packages listés.


🚧 Améliorations Possibles

Idées d'Évolution

  • Mode difficulté variable: codes de 3-5 couleurs, 4-10 couleurs différentes
  • Solver intégré: algorithme de résolution automatique (mode indice)
  • Statistiques: suivi des parties, taux de victoire, distribution des tentatives
  • Persistance des scores: fichier JSON ou base de données SQLite
  • Interface sonore: feedback audio sur les victoires/erreurs
  • Thèmes visuels: plusieurs palettes de couleurs/styles
  • Mode multijoueur: un joueur crée le code, l'autre devine
  • Export d'historique: sauvegarde des parties en CSV/JSON

📄 Licence

Ce projet est livré sans licence spécifique pour le moment. Vous êtes libre de l'utiliser, le modifier et le distribuer à des fins éducatives et personnelles.


🙏 Remerciements

Inspiré par le jeu de plateau classique MasterMind créé par Invicta).


Amusez-vous bien à deviner ces codes colorés! 🎨