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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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");
 
 
}
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.

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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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");
 
 
}
Si vous avez des conseils pour rendre ce code plus armonieux

cordialement

dds69