Newer
Older
python_M_mind / README.md
# MasterMind

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

![Python](https://img.shields.io/badge/Python-3.7+-blue.svg)
![License](https://img.shields.io/badge/License-MIT-green.svg)

---

## 📋 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
```bash
# 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
```bash
cd src
python main.py
```

Ou directement:
```bash
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`:

```python
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__`:

```bash
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](https://en.wikipedia.org/wiki/Mastermind_(board_game)).

---

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