đŸ”„ Projet de fin d'annĂ©e D&D - 5ttr

🐉 Ce projet de fin d’annĂ©e vise Ă  concevoir un systĂšme complet de gestion de personnages de type 'Donjons & Dragons' (D&D 5e Ă©dition, simplifiĂ©e) Ă  travers quatre volets techniques

🎯 Objectif du projet

Ce projet a pour objectif de développer un univers technique et narratif complet, inspiré de Donjons & Dragons (5e édition), réparti en quatre volets applicatifs :

  • 🧰 Un back-office PHP : pour la gestion complĂšte des personnages, des objets et des rĂšgles du jeu.

  • 🌐 Un front-office Flask (Python) : pour une visualisation interactive et esthĂ©tique du monde et des personnages.

  • 🎼 Un mini-jeu Pygame : qui met en scĂšne les personnages et leur permet d’interagir dans des combats ou dĂ©fis.

  • 🔗 Une API REST (option PHP ou Python) : qui permettra Ă  d’autres applications ou modules d’interagir avec les donnĂ©es.

L’ensemble est reliĂ© par une base de donnĂ©es MySQL unique, partagĂ©e entre les diffĂ©rents modules.

Ce projet te demandera de combiner plusieurs compĂ©tences acquises durant l’annĂ©e : modĂ©lisation de base de donnĂ©es, programmation web cĂŽtĂ© serveur, dĂ©veloppement front-end, gestion de projet, intĂ©gration de bibliothĂšques, rĂ©utilisation de donnĂ©es, etc.


🧙 Contexte gĂ©nĂ©ral : Donjons & Dragons

Dans Donjons & Dragons, chaque joueur incarne un personnage imaginaire dans un univers mĂ©diĂ©val-fantastique. Ce personnage a des caractĂ©ristiques, une race (elfe, nain, humain
), une classe (guerrier, voleur, magicien
) et progresse en accumulant de l’expĂ©rience.

Notre projet se base sur les principes de la 5e Ă©dition de D&D, en les adaptant lĂ©gĂšrement pour qu’ils restent simples Ă  gĂ©rer informatiquement.


🧙 Univers Donjons & Dragons : rappel des bases

Un joueur incarne un personnage évoluant dans un monde médiéval-fantastique. Ce personnage a une race, une classe, des caractéristiques, un niveau, une expérience, un inventaire, etc.

đŸ‘€ Personnages

  • Personnages Jouables (PJ): Ce sont les hĂ©ros que le joueur peut crĂ©er et faire Ă©voluer.
  • Personnages Non-Jouables (PNJ): Ce sont des crĂ©atures ou humains contrĂŽlĂ©s par le systĂšme. Ils partagent les mĂȘmes attributs que les PJ, mais ont en plus une catĂ©gorie :
    • AlliĂ© : aide le joueur
    • Ennemi : s’oppose au joueur

Tous les personnages (PJ ou PNJ) possĂšdent :

  • Nom

  • Race (ex. : Humain, Elfe, Nain, Orc
)

  • Classe (ex. : Guerrier, Mage, Voleur, Clerc
)

  • Alignement (ex: bon, neutre, mauvais)

  • Niveau (de 1 Ă  5)

  • Points d’expĂ©rience (XP)

  • Points de vie (PV)

  • 6 caractĂ©ristiques notĂ©es sur 20 :

    • FOR (Force)
    • DEX (DextĂ©ritĂ©)
    • CON (Constitution)
    • INT (Intelligence)
    • SAG (Sagesse)
    • CHA (Charisme)
  • Chaque caractĂ©ristique possĂšde un modificateur : mod = (valeur - 10) // 2

Par exemple, une Force de 16 donne un modificateur de +3.

đŸ”č Points de vie (PV)

Les points de vie reprĂ©sentent la rĂ©sistance physique d’un personnage. Ils dĂ©pendent de la classe et du niveau.

đŸ”č Points d’expĂ©rience (XP) et niveau

Les personnages gagnent des XP en accomplissant des actions ou des dĂ©fis. L’accumulation d’XP permet d’atteindre un niveau supĂ©rieur, ce qui amĂ©liore les compĂ©tences du personnage.

Niveau XP nécessaires
1 0
2 300
3 900
4 2 700

 


(On s’arrĂȘtera au niveau 5 pour ce projet)


🎒 Inventaire et objets

Chaque personnage peut possĂ©der un ou plusieurs items. Les objets enrichissent l’univers et ont un type, des effets, un niveau requis, etc.

Types d’objets

  • Armes : Ă©pĂ©e, arc, dague (peuvent amĂ©liorer les dĂ©gĂąts)
  • Armures : cape magique, bouclier (peuvent amĂ©liorer les PV)
  • Objets magiques : anneau de feu, talisman d’invisibilitĂ©
  • Potions : soin, force, vitesse
  • Sorts : boule de feu, soin, illusion

Exemple d’objet

{
  "nom": "ÉpĂ©e du feu",
  "type": "arme",
  "effet": "+3 dégùts",
  "niveau requis": 2
}

đŸŽČ Tests de caractĂ©ristiques

Les tests de caractéristiques permettent de simuler des actions risquées (ex : escalader, persuader, détecter un piÚge
). Chaque test :

  • utilise une des six caractĂ©ristiques
  • a un degrĂ© de difficultĂ© (DD) choisi par le MJ (MaĂźtre du Jeu)
  • consiste Ă  lancer un d20 et Ă  ajouter le modificateur de la caractĂ©ristique testĂ©e
  • le rĂ©sultat est succĂšs (≄ DD) ou Ă©chec

Conséquences possibles

  • Gain ou perte de points de vie
  • Gain ou perte de points d’expĂ©rience
  • Gain ou perte d’un objet
  • DĂ©blocage d’une scĂšne ou interaction

⚔ Organisation du projet

Tu développeras 3 applications connectées à une base de données MySQL commune :

Partie Langage Fonction
Éditeur de personnages PHP (avec HTML/CSS) CrĂ©ation, Ă©dition, suppression de personnages
Visualisateur Flask + Bootstrap/Tailwind Affichage attrayant des personnages
Mini-jeu Pygame Utilisation des personnages dans un jeu simple

🔌 REST API – Communication entre systùmes

Une API REST (Representational State Transfer) est une interface qui permet à différentes applications de communiquer via Internet de maniÚre structurée.

Elle pourra ĂȘtre dĂ©veloppĂ©e au choix en PHP ou en Python.

🔧 Avantages de l’API REST

  • StandardisĂ©e (utilise HTTP, JSON)
  • Flexible : sĂ©paration entre les donnĂ©es et les interfaces
  • RĂ©utilisable : d’autres projets pourront l’exploiter
  • SĂ©curisable : accĂšs contrĂŽlĂ© via tokens, rĂŽles, etc.

Chaque partie fera l’objet d’un cahier des charges prĂ©cis, que nous aborderons ensemble.


đŸ—ïž CompĂ©tences mobilisĂ©es

Ce projet te permettra de mobiliser :

  • la modĂ©lisation de base de donnĂ©es relationnelles
  • la programmation orientĂ©e objet (Python, PHP)
  • la crĂ©ation d’interfaces web (HTML, CSS, JS, Bootstrap/Tailwind)
  • le dĂ©veloppement d’un mini-jeu graphique avec Pygame
  • la lecture/Ă©criture de donnĂ©es entre plusieurs technologies
  • la gestion de projet (Trello, Git, documentation, prĂ©sentation orale)