Skip to content

Commit 50618cf

Browse files
authoredNov 5, 2024
Merge pull request #26 from JulesFouchy/main
TD7 S1: Add a second Struct exercise
2 parents 27eddc8 + 3ceed91 commit 50618cf

File tree

1 file changed

+83
-3
lines changed

1 file changed

+83
-3
lines changed
 

‎content/TDs/S1/07_Struct.md

Lines changed: 83 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
title: TD7 - Structures
33
---
44

5-
## Exercice 1
5+
## Exercice 1 : déplacements
66

7-
Vous êtes le pilote d'un sous-marin, vous avez reçu des ordres de mouvements sous la forme d'une instruction et d'une distance à parcourir. Vous devez écrire un programme qui permet de calculer la position du sous-marin après avoir effectué les mouvements reçus.
7+
Vous êtes le pilote d'un sous-marin, vous avez reçu des ordres de mouvement sous la forme d'une instruction et d'une distance à parcourir. Vous devez écrire un programme qui permet de calculer la position du sous-marin après avoir effectué les mouvements reçus.
88

99
Votre position initiale est `(0, 0)` et vous pouvez vous déplacer dans les directions suivantes: `Up`, `Down`, `Forward`, `Backward`.
1010

@@ -58,4 +58,84 @@ std::vector<Move> moves = {
5858

5959
:::info
6060
Exercice inspiré de de l'édition **2021** de l'**advent of code**: https://adventofcode.com/2021/day/2
61-
:::
61+
:::
62+
63+
## Exercice 2 : combats de Pokémons
64+
65+
Un pokémon a un Nom, des Points de Vie, une Attaque et une Vitesse. Un combat entre deux Pokémons se déroule ainsi:
66+
- À chaque tour, le pokémon avec la plus grande vitesse commence (si égalité, on choisit au hasard lequel de deux commence ce tour)
67+
- Le pokémon attaquant réduit les Points de Vie de l'autre d'un montant égal à son attaque. Puis, si le deuxième pokémon n'est pas encore KO (Points de Vie encore > 0), il attaque à son tour
68+
69+
Faites une structure représentant un Pokémon, puis écrivez une fonction faisant le combat entre deux Pokémons.<br/>
70+
Par exemple:
71+
72+
```cpp
73+
Pokemon pokemon1{.nom = "Poke1", .points_de_vie = 50, .attaque = 10, .vitesse = 8};
74+
Pokemon pokemon2{.nom = "Poke2", .points_de_vie = 30, .attaque = 20, .vitesse = 3};
75+
combat(pokemon1, pokemon2);
76+
```
77+
78+
doit afficher :
79+
```
80+
Tour 1:
81+
Poke1 attaque, il reste 20 PV à Poke2.
82+
Poke2 attaque, il reste 30 PV à Poke1.
83+
84+
Tour 2:
85+
Poke1 attaque, il reste 10 PV à Poke2.
86+
Poke2 attaque, il reste 10 PV à Poke1.
87+
88+
Tour 3:
89+
Poke1 attaque, il reste 0 PV à Poke2.
90+
Poke2 est KO, il ne peut pas attaquer.
91+
92+
Poke1 gagne!
93+
```
94+
95+
Un dresseur a un Nom et 6 pokémons. Dans un combat entre deux dresseurs, ils font combattre leurs pokémons les uns après les autres, jusqu'à ce que tous les pokémons d'un des dresseurs soient KOs.<br/>
96+
Par exemple:
97+
98+
```cpp
99+
Dresseur dresseur1{.nom = "Dresseur1", .pokemons = {
100+
Pokemon{.nom = "Dresseur1_Poke1", .points_de_vie = 5, .attaque = 10, .vitesse = 8},
101+
Pokemon{.nom = "Dresseur1_Poke2", .points_de_vie = 5, .attaque = 10, .vitesse = 8},
102+
Pokemon{.nom = "Dresseur1_Poke3", .points_de_vie = 5, .attaque = 10, .vitesse = 8},
103+
Pokemon{.nom = "Dresseur1_Poke4", .points_de_vie = 5, .attaque = 10, .vitesse = 8},
104+
Pokemon{.nom = "Dresseur1_Poke5", .points_de_vie = 5, .attaque = 10, .vitesse = 8},
105+
Pokemon{.nom = "Dresseur1_Poke6", .points_de_vie = 5, .attaque = 10, .vitesse = 8},
106+
}};
107+
Dresseur dresseur2{.nom = "Dresseur2", .pokemons = {
108+
Pokemon{.nom = "Dresseur2_Poke1", .points_de_vie = 20, .attaque = 10, .vitesse = 3},
109+
Pokemon{.nom = "Dresseur2_Poke2", .points_de_vie = 20, .attaque = 10, .vitesse = 3},
110+
Pokemon{.nom = "Dresseur2_Poke3", .points_de_vie = 20, .attaque = 10, .vitesse = 3},
111+
Pokemon{.nom = "Dresseur2_Poke4", .points_de_vie = 20, .attaque = 10, .vitesse = 3},
112+
Pokemon{.nom = "Dresseur2_Poke5", .points_de_vie = 20, .attaque = 10, .vitesse = 3},
113+
Pokemon{.nom = "Dresseur2_Poke6", .points_de_vie = 20, .attaque = 10, .vitesse = 3},
114+
}};
115+
combat(dresseur1, dresseur2);
116+
```
117+
118+
doit afficher :
119+
```
120+
Tour 1:
121+
Dresseur1_Poke1 attaque, il reste 10 PV à Dresseur2_Poke1.
122+
Dresseur2_Poke1 attaque, il reste 0 PV à Dresseur1_Poke1.
123+
124+
Dresseur2_Poke1 gagne!
125+
126+
Tour 2:
127+
Dresseur1_Poke2 attaque, il reste 0 PV à Dresseur2_Poke1.
128+
Dresseur2_Poke1 est KO, il ne peut pas attaquer.
129+
130+
Dresseur1_Poke2 gagne!
131+
132+
Tour 3:
133+
Dresseur1_Poke2 attaque, il reste 10 PV à Dresseur2_Poke2.
134+
Dresseur2_Poke2 attaque, il reste 0 PV à Dresseur1_Poke2.
135+
136+
Dresseur2_Poke2 gagne!
137+
138+
etc...
139+
140+
Dresseur 2 a gagné!
141+
```

0 commit comments

Comments
 (0)
Please sign in to comment.