|
2 | 2 | title: TD7 - Structures
|
3 | 3 | ---
|
4 | 4 |
|
5 |
| -## Exercice 1 |
| 5 | +## Exercice 1 : déplacements |
6 | 6 |
|
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. |
8 | 8 |
|
9 | 9 | Votre position initiale est `(0, 0)` et vous pouvez vous déplacer dans les directions suivantes: `Up`, `Down`, `Forward`, `Backward`.
|
10 | 10 |
|
@@ -58,4 +58,84 @@ std::vector<Move> moves = {
|
58 | 58 |
|
59 | 59 | :::info
|
60 | 60 | 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