IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

test if non prise en compte


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant Réseau
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant Réseau
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 84
    Points
    84
    Par défaut test if non prise en compte
    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

  2. #2
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    Deja commence par mettre les declarations de structures en dehors de tes fonctions, sinon tu vas avoir des problemes sur les passe en parametre a d'autres fonctions (probleme de declaration notamment).

    Ensuite divise le plus possible ton code dans des fonctions portant des noms explicites, ca facilite la lecture plutot que de lire tout d'un bloc.

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant Réseau
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant Réseau
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 84
    Points
    84
    Par défaut
    Bonsoir,

    Merci du conseil, j'ai enlevé toutes les structures qui au final pour mon niveau ne m'ont pas servi.

    J'ai tout bien réorganiser et commenter un peu plus le code.

    Merci beaucoup du conseil.

    Cordialement

    dds69

  4. #4
    Membre éprouvé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Points : 917
    Points
    917
    Par défaut
    Tu devrais également découper tes fonctions, ça te permettra d'y voir plus clair dans ton code

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Couleur non prise en compte en exécution
    Par BECHE dans le forum Langage
    Réponses: 2
    Dernier message: 22/12/2005, 18h14
  2. Installation SP2 + RAM non prise en compte
    Par laure_belette dans le forum Windows XP
    Réponses: 3
    Dernier message: 13/10/2005, 12h46
  3. [css] Feuille de style non prise en compte
    Par Neuromancien2 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 29/06/2005, 11h49
  4. [netbeans] Modifications non prises en compte
    Par nadass dans le forum NetBeans
    Réponses: 6
    Dernier message: 07/04/2005, 13h49
  5. Lecture de fichier - dernière ligne non prise en compte
    Par JulienPles dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo