← Retour aux projets

MiniJeux

Python JSON
MiniJeu image

Aperçu du projet

MiniJeux est une collection de jeux développée en Python, conçue pour explorer les concepts fondamentaux de la programmation tout en créant des expériences ludiques. Le projet regroupe plusieurs jeux classiques : un jeu de devinettes, un morpion, et le jeu des allumettes.

Chaque jeu propose différents modes de difficulté grâce à l'implémentation d'intelligences artificielles de différents niveaux. Les joueurs peuvent ainsi s'affronter contre des robots faciles, moyens ou difficiles, offrant une expérience progressive et stimulante.

Fonctionnalités principales

  • Jeu de devinettes avec système d'indices progressifs pour guider le joueur
  • Morpion (Tic-Tac-Toe) avec possibilité de jouer contre l'ordinateur ou un autre joueur
  • Jeu des allumettes avec stratégies d'IA optimisées pour différents niveaux
  • Système de robots avec trois niveaux de difficulté (facile, moyen, difficile)
  • Sauvegarde des scores et statistiques des parties jouées au format JSON
  • Interface en ligne de commande claire et intuitive
  • Gestion des règles et validation automatique des coups

Technologies utilisées

Le projet est entièrement développé en Python, un langage particulièrement adapté pour l'apprentissage de la programmation et le développement d'algorithmes. Sa syntaxe claire et sa grande lisibilité en font un choix idéal pour ce type de projet.

JSON est utilisé pour la persistence des données, notamment pour sauvegarder les scores, l'historique des parties et les paramètres de configuration. Ce format léger et lisible facilite le stockage et la manipulation des données de jeu.

Compétences BUT démontrées

C2 : Optimiser des applications

AC12.03 – Formaliser et mettre en œuvre des outils mathématiques pour l'informatique

Description : Dans le cadre d'un projet Python, j'ai développé une collection de mini-jeux intégrant des robots à plusieurs niveaux de difficulté. Pour le morpion, le robot "niveau difficile" devait jouer de façon optimale, ce qui impliquait d'implémenter un vrai algorithme mathématique de théorie des jeux. Pour le jeu des allumettes, la stratégie gagnante repose sur une propriété mathématique.

Rôle personnel : J'ai conçu et implémenté l'algorithme Minimax pour le bot difficile du morpion : l'algorithme explore récursivement tous les états possibles du jeu, évalue chaque issue (victoire, défaite, nul) et remonte le coup optimal. J'ai également modélisé la stratégie gagnante du jeu des allumettes basée sur la congruence modulo (n mod (k+1) = 0), pour le bot niveau difficile, et introduit volontairement des erreurs probabilistes pour les bots de niveau inférieur. Les scores et statistiques ont été persistés en JSON.

Analyse réflexive

La difficulté principale a été de comprendre le fonctionnement de Minimax avant de l'implémenter : il fallait modéliser l'arbre des états, attribuer des scores aux feuilles et propager ces scores vers la racine. Ce n'est pas trivial à implémenter pour la première fois. Sur le plan des softskills, ce projet a exigé beaucoup de perspévérance : comprendre un algorithme sur le papier est une chose, le déboguer dans une récursion profonde en est une autre.

Défis rencontrés

Le principal défi était l'implémentation des algorithmes d'intelligence artificielle pour les différents robots. Pour le morpion, il a fallu développer un algorithme minimax permettant au robot difficile de jouer de manière optimale, tandis que les robots plus faciles utilisent des stratégies simplifiées avec une part de hasard.

Pour le jeu des allumettes, comprendre et implémenter la stratégie gagnante nécessitait une bonne compréhension de la théorie des jeux. Il a également fallu rendre les robots de niveau moyen intéressants à affronter en trouvant le bon équilibre entre stratégie optimale et erreurs occasionnelles.

Apprentissages

Ce projet m'a permis de consolider mes bases en programmation Python, notamment sur les structures de données, les boucles, les conditions, et la gestion des entrées utilisateur. La mise en place d'une architecture modulaire avec différents fichiers pour chaque jeu a renforcé ma compréhension de l'organisation du code.

J'ai également développé des compétences en algorithmique, particulièrement pour l'implémentation des intelligences artificielles. La gestion de la sauvegarde des données avec JSON et la création d'une interface utilisateur fluide en ligne de commande ont aussi été des aspects formateurs de ce développement.