Bonjour à tous,
Je suis en train de travailler sur un petit projet que l'on travaille dans ma classe(1ere année bts SIO donc plutôt débutant), et après avoir rétabli quelques erreurs (loin de les avoirs toutes trouvées) j'ai un petit souci dans ma logique dont je ne trouve pas la solution.
Voici mon code
quand la vie tombe à 0 il me relance sur ma boucle au lieu de m'en faire sortir. Le soucis c'est que je ne sais pas ou définir le test pour pouvoir finir si la vie tombe à zéro.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { //Structure du personnage struct perso { const int maxSoin, minSoin ; const int maxDef, minDef; const int maxDmg, minDmg; int ptsVie; }; //structure du monstre struct monstre { const int maxDmg, minDmg; int ptsVie; }; //variable d'appel du perso struct perso luc; //variable d'appel du monstre struct monstre dragon; //Variable des constante // declaration de la fonction aléatoire srand(time(NULL)); // Définition des variables int choixacc = 0, choixact = 0, fermaid = 0, maxSoin = 40, minSoin = 40, maxDef = 20, minDef = 10, maxDmg = 20, minDmg = 10; int attakJ, attakM, defJ, soinJ, ptsVieL=100, ptsVieD=100; // Menu de départ while (choixacc != 3) { printf ("Bienvenue a Megadeathia !\n"); printf ("*********************************\n\n"); printf ("1: Jouer, 2: Aide, 3 Quitter\n\n"); //choixact=1; scanf ("%d", &choixacc); system ("cls"); printf("Attention un monstre sanguinaire vous a repere !\n"); switch (choixacc){ while (choixact !=4 ) { case 1: printf("Que voulez - vous faire ?\n\n"); printf("1 : attaquer\n\n"); printf("2 : se defendre\n\n"); printf("3 : prendre une potion\n\n"); printf("4 : fuir\n"); scanf("%d", &choixact); // On rentre dans la boucle qui accède au combat //switch pour donner le resultat des differents choix de jeu !! switch(choixact){ // phase attaque/joueur + monstre case 1 : printf ("Vous avez choisi d'attaquer\n"); attakJ = (rand() % (maxDmg - minDmg + 1)) + minDmg; printf ("Vous infligez %d de degats au dragon\n", attakJ); ptsVieD = ptsVieD - attakJ; printf ("il reste %d point de vie au dragon\n", ptsVieD); attakM = (rand() % (maxDmg - minDmg + 1)) + minDmg; printf ("Le dragon vous attaque :\n"); printf ("Il vous inflige %d de degat\n", attakM); ptsVieL = ptsVieL - attakM; printf ("Il vous reste %d point de vie\n", ptsVieL); break; // phase defense joueur/monstre case 2 : defJ = (rand() % (maxDef - minDef + 1)) + minDef; attakM = (rand() % (maxDmg - minDmg + 1)) + minDmg; printf ("Vous avez choisis de vous defendre <- noob ^^\n\n"); printf ("Le dragon vous attaque\n\n"); printf ("Votre defence absorbe %d de degats\n\n",defJ); ptsVieL = ptsVieL - (attakM - defJ); printf ("Il vous reste %d point de vie\n\n", ptsVieL); break; //phase prise de potion, attaque du mob case 3 : soinJ = (rand() % (maxSoin - minSoin + 1)) + minSoin; attakM = (rand() % (maxDmg - minDmg + 1)) + minDmg; printf ("Vous avez choisis de prendre une potion de soin\n\n"); ptsVieL = ptsVieL + soinJ; printf ("Vous avez maintenant %d points de vie\n\n" , ptsVieL); printf ("Le dragon vous attaque\n\n"); printf ("Il vous inflige %d de degat\n\n", attakM); ptsVieL = ptsVieL - attakM; printf ("Il vous reste %d point de vie\n\n", ptsVieL); break; default : printf ("NANANANANANA ça ne marche pas XD"); } //system("cls"); ? // test de la vie du joueur if (ptsVieL <=0) { printf ("Vous avez perdu\n\n"); } // test de la vie du mob else if (ptsVieD <=0){ printf("Vous avez gagne\n\n"); } else if (ptsVieD<=0 && ptsVieL<=0){ printf("Double kill !!\n\n"); } } case 2 : printf ("Vous etes un jeune hero du nom de Luke, et vous explorez une grotte qui parrait il, est habitee par un Dragon.\nPour l'affronter utilisez les commandes donnees.\nBonne chance a vous\nQuitter: 9\n"); while (fermaid != 9) { scanf ("%d", &fermaid); } system ("cls"); break; default : printf ("1: Jouer, 2: Aide, 3 Quitter\n\n"); } } printf ("Merci et au revoir\n\n"); }
Si vous pouvez me conseiller, je suis tout ouïe.
édit : après quelques essais je suis parvenu à le rendre fonctionnel mais loin d'être parfait
Si vous avez des conseils pour rendre ce code plus armonieuxCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130 #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { // declaration de la fonction aléatoire srand(time(NULL)); // Définition des variables int choixacc = 0, choixact = 0, fermaid = 0, maxSoin = 40, minSoin = 40, maxDef = 20, minDef = 10, maxDmg = 20, minDmg = 10; int attakJ, attakM, defJ, soinJ, ptsVieL=100, ptsVieD=100; // Menu de départ while (choixacc != 3) { printf ("Bienvenue a Megadeathia !\n"); printf ("*********************************\n\n"); printf ("1: Jouer, 2: Aide, 3 Quitter\n\n"); // Réinitialisation des variables ptsVieD =100; ptsVieL =100; //choixact=1; scanf ("%d", &choixacc); system ("cls"); printf("Attention un monstre sanguinaire vous a repere !\n"); switch (choixacc){ while (ptsVieD >=0 && ptsVieL >=0 && choixact !=4) { case 1: printf("Que voulez - vous faire ?\n\n"); printf("1 : attaquer\n\n"); printf("2 : se defendre\n\n"); printf("3 : prendre une potion\n\n"); printf("4 : fuir\n"); scanf("%d", &choixact); // On rentre dans la boucle qui accède au combat //switch pour donner le resultat des differents choix de jeu !! switch(choixact){ // phase attaque/joueur + monstre case 1 : printf ("Vous avez choisi d'attaquer\n"); attakJ = (rand() % (maxDmg - minDmg + 1)) + minDmg; printf ("Vous infligez %d de degats au dragon\n", attakJ); ptsVieD = ptsVieD - attakJ; printf ("il reste %d point de vie au dragon\n", ptsVieD); attakM = (rand() % (maxDmg - minDmg + 1)) + minDmg; printf ("Le dragon vous attaque :\n"); printf ("Il vous inflige %d de degat\n", attakM); ptsVieL = ptsVieL - attakM; printf ("Il vous reste %d point de vie\n\n", ptsVieL); break; // phase defense joueur/monstre case 2 : defJ = (rand() % (maxDef - minDef + 1)) + minDef; attakM = (rand() % (maxDmg - minDmg + 1)) + minDmg; printf ("Vous avez choisis de vous defendre <- noob ^^\n\n"); printf ("Le dragon vous attaque\n\n"); printf ("Votre defence absorbe %d de degats\n\n",defJ); ptsVieL = ptsVieL - (attakM - defJ); printf ("Il vous reste %d point de vie\n\n", ptsVieL); break; //phase prise de potion, attaque du mob case 3 : soinJ = (rand() % (maxSoin - minSoin + 1)) + minSoin; attakM = (rand() % (maxDmg - minDmg + 1)) + minDmg; printf ("Vous avez choisis de prendre une potion de soin\n\n"); ptsVieL = ptsVieL + soinJ; printf ("Vous avez maintenant %d points de vie\n\n" , ptsVieL); printf ("Le dragon vous attaque\n\n"); printf ("Il vous inflige %d de degat\n\n", attakM); ptsVieL = ptsVieL - attakM; printf ("Il vous reste %d point de vie\n\n", ptsVieL); break; default : printf ("NANANANANANA ca ne marche pas XD\n\n"); } //system("cls"); ? // test de la vie du joueur if (ptsVieL <=0) { printf ("Vous avez perdu\n\n"); } // test de la vie du mob else if (ptsVieD <=0){ printf("Vous avez gagne\n\n"); } else if (ptsVieD<=0 && ptsVieL<=0){ printf("Double kill !!\n\n"); } } break; case 2 : printf ("Vous etes un jeune hero du nom de Luke, et vous explorez une grotte qui parrait il, est habitee par un Dragon.\nPour l'affronter utilisez les commandes donnees.\nBonne chance a vous\nQuitter: 9\n"); while (fermaid != 9) { scanf ("%d", &fermaid); } system ("cls"); break; default : printf ("1: Jouer, 2: Aide, 3 Quitter\n\n"); } } printf ("Merci et au revoir\n\n"); }
cordialement
dds69