Ce projet est une application développée en Python permettant de gérer un tournoi d’échecs en ligne de commande.
Elle fonctionne entièrement hors ligne, conformément aux exigences du projet.
L’application permet de :
- créer un tournoi et jouer tous les rounds ;
- reprendre un tournoi existant à partir de son état sauvegardé ;
- générer différents rapports (joueurs, tournois, rounds, matchs).
Le projet respecte une architecture MVC afin de séparer clairement :
- les affichages (views) ;
- les données (models) ;
- la logique métier (controllers).
Avant d'utiliser le programme, vous devez disposer de :
- Python 3.10 ou version supérieure ;
- Un environnement virtuel recommandé (
venv) ; pippour installer les dépendances ;- Les outils de qualité de code (pour le rapport flake8) :
flake8flake8-html
Depuis le dossier CODE/ :
CODE/
├── controllers/ # Logique métier : création/reprise de tournoi, matchs, rapports…
│ ├── controller.py
│ ├── controller_match.py
│ ├── controller_round.py
│ ├── controller_tournament.py
│ ├── creation_tournoi.py # Création d’un nouveau tournoi
│ ├── reprise_tournoi.py # Reprise d’un tournoi existant
│ ├── generer_rapport.py # Génération des rapports
│ └── …
├── models/ # Classes Player, Match, Round, Tournament
│ ├── model.py
│ ├── model_match.py
│ ├── model_round.py
│ ├── model_tournament.py
│ └── …
├── views/ # Affichage et saisies utilisateur (menus, messages…)
│ ├── view.py # Menu principal
│ ├── view_creation_tournoi.py
│ ├── view_reprise_tournoi.py
│ ├── view_report.py
│ └── …
├── flake-report/ # Rapport HTML généré par flake8-html (sans erreur)
├── data_base_players.json # Base de données des joueurs
├── data_base_tournament.json # Base de données des tournois
├── main.py # Point d’entrée de l’application
├── .flake8 # Configuration flake8
├── .gitignore # Fichiers ignorés par Git
└── venv/ # Environnement virtuel (local, non nécessaire sur GitHub)
Les fichiers
data_base_players.jsonetdata_base_tournament.jsonsont remplis automatiquement par le programme au fur et à mesure de l’utilisation.
S’ils sont vides au départ, ce n’est pas un problème.
Depuis la racine du projet (CODE/), exécuter :
python main.pyLe programme affiche alors le menu principal :
1 - Créer un tournoi
2 - Reprendre un tournoi
3 - Générer un rapport
-
Créer un tournoi
- Choisir
1 - Créer un tournoi. - Saisir les informations du tournoi (nom, lieu, dates…).
- Indiquer le nombre de joueurs (pair et ≥ 2).
- Créer les joueurs un par un.
- Lancer les rounds, choisir les vainqueurs ou les matchs nuls, suivre l’affichage du classement.
- Choisir
-
Reprendre un tournoi
- Choisir
2 - Reprendre un tournoi. - Saisir le nom d’un tournoi déjà enregistré.
- Le programme reconstruit les rounds et propose de continuer les matchs restants jusqu’à la fin du tournoi.
- Choisir
-
Générer un rapport
- Choisir
3 - Générer un rapport. - Un sous-menu de rapports s’affiche (joueurs, tournois, rounds/matchs d’un tournoi, etc.).
- Suivre les instructions pour afficher les informations souhaitées.
- Choisir
Toutes les interactions se font en ligne de commande, par saisie de numéros et de textes.
Le projet inclut un dossier flake-report/ généré avec flake8-html.
Il doit contenir un rapport sans aucune erreur de peluchage.
Pour générer ou régénérer un rapport flake8-html à partir de la racine du projet (CODE/) :
flake8 --format=html --htmldir=flake-reportSi des erreurs sont détectées, corriger le code puis relancer la commande jusqu’à ce que le rapport indique 0 erreur.
Les principales dépendances sont :
- Python 3.x
- flake8
- flake8-html
- tinydb
Un fichier requirements.txt est fourni, les installer avec :
pip install -r requirements.txtSinon, installation minimale :
pip install flake8 flake8-html tinydb- Mettre en place et utiliser une architecture logicielle MVC ;
- Manipuler des classes Python (joueurs, matchs, rounds, tournois) ;
- Gérer des entrées utilisateur en ligne de commande ;
- Structurer un projet logiciel complet et maintenable ;
- Respecter PEP 8 et vérifier le code avec flake8 et flake8-html.