Aller au contenu principal

🧪 TP1 – Créateur de personnage

🎯 Objectif

Créer un programme console qui permet à un joueur de créer un personnage de jeu en choisissant son nom, son âge, et une classe. Le programme affiche ensuite un résumé personnalisé avec des caractéristiques influencées par les choix de l’utilisateur.

🧱 Éléments obligatoires

ÉlémentDétail
Lecture consoleLire le nom, l’âge, le choix de classe via Console.ReadLine()
Conversion de typesUtiliser int.TryParse() pour l’âge, comparer les chaînes pour valider la classe
Validation de donnéesVérifier que l’âge est un entier positif, que la classe est G, M ou V, et que le nom n’est pas vide
Affichage clairUtiliser Console.WriteLine() avec concaténation classique : "Nom : " + nom
VariablesStocker les infos du joueur (nom, âge, classe, pv, force, intelligence, vitesse)
InitialisationDonner des valeurs par défaut aux variables globales
Méthodes simplesUtiliser des méthodes comme InitialiserStats() et AfficherPersonnage(...) avec paramètres
Méthode avec retourAjouter ObtenirVitesseParClasse(char) qui retourne un float
Conditions (if, else if)Modifier les stats selon la classe et l’âge
CommentairesAjouter des commentaires dans le code
PlanificationÉcrire un pseudo-code ou plan avant de coder

🧮 Variables globales

Avant Main, vous devez déclarer des variables globales pour contenir :

  • Le nom du personnage
  • L’âge
  • La classe (lettre : G, M ou V)
  • Les points de vie (PV)
  • La force
  • L’intelligence
  • La vitesse

Note : Les types ne sont pas donnés volontairement — à vous de les déterminer selon la donnée.


🧠 Contenu de Main()

La méthode Main() doit :

  1. Afficher un titre pour le programme
  2. Appeler des méthodes pour :
    • Lire et valider le nom
    • Lire et valider l’âge
    • Lire et valider la classe
  3. Initialiser les statistiques du personnage selon les règles
  4. Afficher le résumé du personnage

🔧 Méthodes à implémenter

LireNom()

  • Paramètres : aucun
  • Retour : nom saisi par l’utilisateur (ou "Anonyme" si invalide)

Valide que le nom n’est pas vide.


LireAge()

  • Paramètres : aucun
  • Retour : un entier représentant l’âge

Valide que l’âge est un entier positif. Si l’entrée n’est pas valide, retourne 18 par défaut.


LireClasse()

  • Paramètres : aucun
  • Retour : un caractère 'G', 'M', ou 'V'

Si l’entrée n’est pas valide, retourne 'G' par défaut.


InitialiserStats()

  • Paramètres : aucun
  • Retour : aucun

Affecte les bonnes valeurs aux statistiques selon la classe et l’âge.


ObtenirVitesseParClasse(char classe)

  • Paramètres : un caractère représentant la classe
  • Retour : un nombre décimal (float) représentant la vitesse
ClasseVitesse
G2.0
M2.5
V3.5

AfficherPersonnage(...)

  • Paramètres : nom, âge, classe, PV, force, intelligence, vitesse
  • Retour : aucun

Affiche les statistiques du personnage.


📜 Règles d’affaires

  • Nom invalide (vide ou espaces) → "Anonyme"
  • Âge invalide (non entier ou négatif) → 18
  • Classe invalide'G' par défaut

🎲 Modificateurs par classe

ClassePVForceIntelligence
Guerrier20155
Magicien12518
Voleur151010

📈 Modificateurs par âge

  • Âge ≤ 40 → -5 Intelligence, -5 Force
  • Âge > 40 → +10 Intelligence, +10 Force, -20 PV

🧾 Grille de correction – TP1 : Créateur de personnage

⚠️ Compilation obligatoire :

  • ✅ Le code compile : correction complète selon les critères ci-dessous.
  • ❌ Le code ne compile pas : note maximale 60%.

🔍 Évaluation détaillée

CritèrePoints
✅ Le code compile sans erreurObligatoire
🧱 Pseudo-code ou plan de travail fourni (papier ou commentaire)10
🔤 Lecture et validation du nom (non vide)5
🔢 Lecture et validation de l’âge (entier positif avec TryParse)10
🎭 Lecture et validation de la classe (G, M, V, sans tableaux)10
🧾 Déclaration et initialisation des variables globales5
🧠 Application correcte des modificateurs selon la classe10
📅 Application correcte des modificateurs selon l’âge10
⚙️ Création et usage des méthodes demandées (LireNom, LireAge, etc.)15
🔁 Utilisation des conditions if / else if correctement5
🖨️ Affichage final clair avec Console.WriteLine()5
💬 Présence de commentaires dans le code5
🧠 Méthode ObtenirVitesseParClasse(char) correctement utilisée5

💯 Total : 100 points


📎 Annexe – Jeu de tests (Cas de validation)

CasEntrée nomEntrée âgeEntrée classeNom attenduÂge attenduClasse attenduePVForceIntelligenceVitesse
1 – Nom, âge et classe valides (G)Arthur25GArthur25G201002.0
2 – Nom vide, âge valide, classe M(vide)30MAnonyme30M120132.5
3 – Nom valide, âge invalide (lettre), classe VLilaabcVLila18V15553.5
4 – Nom valide, âge négatif, classe invalideFred-5XFred18G201002.0
5 – Nom avec espace, âge > 40, classe minuscule ‘m’Jean Pierre50mJean Pierre50M-815282.5
6 – Tous invalides(vide)-1ZAnonyme18G201002.0
7 – Classe minuscule 'v', âge = 40Zoe40vZoe40V15553.5
8 – Classe minuscule 'g', âge = 41Max41gMax41G025152.0

🔎 Règles appliquées :

  • Nom vide → "Anonyme"
  • Âge non entier ou négatif → 18
  • Classe invalide → 'G' par défaut
  • Modificateurs par classe :
    • G : PV 20, Force 15, Intel 5
    • M : PV 12, Force 5, Intel 18
    • V : PV 15, Force 10, Intel 10
  • Âge ≤ 40 → -5 Intelligence, -5 Force
  • Âge > 40 → +10 Intelligence, +10 Force, -20 PV