Projet
Dans cet exercice, tu vas programmer un crĂ©ateur de joueur en langage C. Chaque joueur reçoit un capital de points alĂ©atoire, rĂ©parti automatiquement selon son poste (gardien, dĂ©fenseur, milieu ou attaquant). Tu devras ensuite permettre Ă lâutilisateur de distribuer ces points dans les diffĂ©rentes caractĂ©ristiques du joueur, puis calculer une note globale en fonction de ses performances et de son comportement.
Ce projet te permettra de mettre en pratique :
if, else),for, while) pour les saisies rĂ©pĂ©tĂ©es,Ces pondĂ©rations servent au dĂ©but du programme pour dĂ©terminer le nombre de points allouĂ©s Ă chaque groupe dâattributs.
| Poste | Physiques | Techniques | Tactiques | Généraux |
|---|---|---|---|---|
| 1 â Gardien | 20 % | 15 % | 25 % | 40 % |
| 2 â DĂ©fenseur | 25 % | 15 % | 35 % | 25 % |
| 3 â Milieu | 25 % | 30 % | 30 % | 15 % |
| 4 â Attaquant | 20 % | 40 % | 25 % | 15 % |
Ă demander :
nom (texte, 30 caractĂšres max)age (entier, entre 10 et 45)numero (entier, entre 1 et 99)poste (1 Ă 4)Exemple dâaffichage :
=== Créateur de joueur ===
Nom du joueur : Alex
Ăge (10..45) : 23
Numéro de maillot : 9
Poste [1=Gardien, 2=Défenseur, 3=Milieu, 4=Attaquant] : 1
OK : Alex (#9), 23 ans, Poste = Gardien
Le programme tire un budget total aléatoire entre 720 et 960 points :
--- Budget total ---
Tirage alĂ©atoire (60%..80% de 1200) â budget_total = 900 pts
Il répartit ensuite ce budget entre les 4 groupes selon le poste choisi. Exemple pour un gardien (20%, 15%, 25%, 40%) :
--- Répartition par pondérations ---
Physiques : 20% â 180 pts
Techniques : 15% â 135 pts
Tactiques : 25% â 225 pts
GĂ©nĂ©raux : 40% â 360 pts
VĂ©rification : 180 + 135 + 225 + 360 = 900 â
â ïž Aucun groupe ne peut dĂ©passer 400 points (car 4 caractĂ©ristiques Ă 100 max).
Lâutilisateur distribue les points du groupe dans 3 attributs, la 4e est calculĂ©e automatiquement pour complĂ©ter le budget exact.
Sâil dĂ©passe le budget ou si la 4e valeur est hors limites (0..100), il doit recommencer la saisie du groupe.
--- Attributs PHYSIQUES (budget: 180 pts) ---
vitesse (0..100) ? 70 [reste: 110]
endurance (0..100) ? 50 [reste: 60]
force (0..100) ? 30 [reste: 30]
--> agilite = 30
Valider ce groupe ? (Y/n) Y
--- Attributs TECHNIQUES (budget: 135 pts) ---
précision (0..100) ? 50 [reste: 85]
contrĂŽle (0..100) ? 40 [reste: 45]
dribble (0..100) ? 35 [reste: 10]
--> tir = 10
Valider ce groupe ? (Y/n) Y
MĂȘme logique pour les deux autres groupes :
Lâutilisateur encode les statistiques de saison :
--- Statistiques ---
Buts ? 3
Passes décisives ? 5
ArrĂȘts ? 18
Cartons jaunes ? 1
Cartons rouges ? 0
Hors-jeu ? 2
Calcul de la moyenne de chaque groupe (sur 100).
Calcul dâun score pondĂ©rĂ© selon le poste (moyenne des groupes Ă pondĂ©ration).
Calcul dâun score statistique (selon le poste) :
5 Ă arrets8 Ă buts + 5 Ă passes5 Ă buts + 8 Ă passes10 Ă buts + 4 Ă passes
â Score limitĂ© Ă 100.Calcul dâun malus fair-play :
malus = 2 Ă cartons_jaunes + 8 Ă cartons_rouges + hors_jeu
(capé à 30)
Calcul de la note finale :
note = 0.7 Ă score_attributs + 0.3 Ă score_statistiques â malus
(bornée entre 0 et 100)
Exemple de calcul affiché :
--- Calculs ---
Score attributs (pondéré) = 64.2
Score statistiques = 90
Malus fair-play = 4
Note finale = 67.9 / 100
Affichage final attendu :
================= FICHE JOUEUR =================
Nom: Alex (#9) Ăge: 23 Poste: Gardien
Budget total tiré : 900 pts
Budgets par groupe: Phys=180 Tech=135 Tact=225 Gen=360
-- PHYSIQUES : vit=70 end=50 for=30 agi=30 (moy=45.0)
-- TECHNIQUES: pré=50 ctr=40 dri=35 tir=10 (moy=33.8)
-- TACTIQUES : vis=60 def=55 att=60 fair=50 (moy=56.3)
-- GENERAUX : pla=90 prs=85 pas=95 dua=90 (moy=90.0)
Stats: buts=3, passes=5, arrĂȘts=18, CJ=1, CR=0, HJ=2
-----------------------------------------------
Attributs pondérés : 64.2
Score statistiques : 90
Malus fair-play : 4
NOTE GLOBALE : 67.9 / 100
Verdict : Excellent gardien sur sa ligne ; technique Ă perfectionner.
================================================
Structure Joueur avec sous-structures pour chaque groupe dâattributs.
Fonctions conseillées :
int tirerBudgetTotal(void);
void repartirBudgetParPoste(int poste, int total, int* bPhys, int* bTech, int* bTact, int* bGen);
void saisirGroupe(const char* nom, int budget, int* a, int* b, int* c, int* d);
double calculScoreAttributs(int poste, double phys, double tech, double tact, double gen);
double calculScoreStats(int poste, int buts, int passes, int arrets);
int calculMalus(int cj, int cr, int hj);
double calculNoteFinale(double attr, double stats, int malus);
void afficherFiche(const Joueur* j);
| ĂlĂ©ment | Points |
|---|---|
| Saisie + validations (groupes et bornes) | 5 |
| Gestion du budget global et des pondérations | 4 |
| Calculs corrects (scores, note finale, malus) | 6 |
| Code structuré et commenté | 3 |
| Affichage clair et complet | 2 |