Contexte
Projet d'ouverture informatique réalisé en tant que chef de projet d'une équipe de 4. L'objectif : concevoir un jeu vidéo en python. Thème choisi : exploration de labyrinthes, combats contre des monstres variés, progression RPG avec boutique et système de sauvegarde chiffrée.
Fonctionnalités
- 7 types de monstres : Goblin (rapide), squelette, orc (tank), sorcier, coffre (piège immobile), champignon, et boss. Chaque type possède des stats, récompenses et comportements distincts.
- Pathfinding : Détection du joueur à 70-90 px, poursuite directe avec contournement de murs, mouvement aléatoire hors portée, détection de blocage et chemins alternatifs incluant les diagonales.
- Boutique in-game : Améliorer vie (max 300), dégâts (max 100) et vitesse (max 5) contre de l'or. Prix calculés dynamiquement.
- Difficulté dynamique : Multiplicateur croissant basé sur le nombre de labyrinthes terminés et le niveau du joueur.
- Boss fight : Carte dédiée tous les 5 labyrinthes, dézoom caméra automatique, boss avec hitbox élargie.
- Sauvegarde chiffrée : Mot de passe → dérivation de clé PBKDF2 (SHA256, 100k itérations) → chiffrement AES Fernet. Protège les données de progression contre la triche.
- Système XP/Level : XP requis ×1.5 par niveau, gains aléatoires de PV et d'or au level-up.
Architecture
- MapManager : 7 cartes (lobby + 5 labyrinthes + boss), portails de téléportation entre cartes, gestion collisions et items.
- Items spéciaux : Potion vie, potion vitesse (×2 pendant 3s), or, diamant bleu (dézoom carte 5s), diamant jaune (level-up instant), torches décoratives, pièges à activation cyclique.
- Machine à états : Jeu, pause, crédits, commandes, boutique, sauvegarde, game over : chaque menu est un état indépendant.
- Profiling intégré : cProfile affiche les 20 fonctions les plus coûteuses pour optimiser les performances.