Partage
  • Partager sur Facebook
  • Partager sur Twitter

Petit exercice personnel

Comment l'améliorer ?

    22 juillet 2010 à 15:44:59

    Bonjour,

    J'ai re-re-repris les cours de C de M@teo.

    L'expérience accumulée dans les autres cours m'ayant appris qu'il fallait toujours (et M@teo nous encourage d'ailleurs à le faire) bidouiller un bout de code différent des exemples du cours, j'ai décidé dès le début de créer un mini-jeu de combat.

    Bon, pour l'instant les interactions sont très, très limitées (pas le niveau, que voulez-vous :lol: ). Je viens de finir la partie I.

    Voilà mon code, pourriez-vous me donner des idées de comment l'améliorer/comment avoir un code plus "propre" ? Et si possible, des idées réalisables à mon petit niveau :-°

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
        int choixMonstre = 0;
        int niveauDuJoueur = 1;
        int valeurDeCombatDuJoueur = 5;
        int valeurDeCombatCastor = 10;
        int valeurDeCombatSerpent = 15;
        int valeurDeCombatLoup = 20;
        int valeurDeCombatOurs = 30;
        int valeurDeCombatDragon = 75;
        int finiLeJeu = 0;
    
        while (niveauDuJoueur < 10)
        {
            printf("Bonjour aventurier, tu es actuellement niveau %d. Ta valeur de combat est donc de %d.\nTu gagneras 5 points dans cette valeur a "
                "chaque niveau gagne.\n\n\n"
                "Quel monstre veux-tu combattre ? Entre le numero correspondant.\n"
                "1. Lapin\n"
                "2. Castor\n"
                "3. Serpent\n"
                "4. Loup\n"
                "5. Ours\n"
                "6. Quitter le jeu\n"
                "\n Votre choix ? ", niveauDuJoueur, valeurDeCombatDuJoueur);
            scanf("%d", &choixMonstre);
    
            switch (choixMonstre)
            {
                case 1:
                    printf("\n\n\nTu affrontes un Lapin ... Et tu le bats !\n");
                    niveauDuJoueur ++;
                    valeurDeCombatDuJoueur += 5;
                    printf("Tu es desormais niveau %d, et as donc %d de valeur de combat.\n\n", niveauDuJoueur, valeurDeCombatDuJoueur);
                    system("PAUSE");
                    system("CLS");
                    break;
                case 2:
                    if (valeurDeCombatDuJoueur < valeurDeCombatCastor)
                    {
                        printf("\n\n\nTu affrontes un Castor ... Et tu perds !\nRetourne t'entrainer un peu, tu n'as pas le niveau !\n\n");
                        system("PAUSE");
                        system("CLS");
                    }
                    else
                    {
                        printf("\n\n\nTu affrontes un Castor ... Et tu le bats !\n");
                        niveauDuJoueur ++;
                        valeurDeCombatDuJoueur += 5;
                        printf("Tu es desormais niveau %d, et as donc %d de valeur de combat.\n\n", niveauDuJoueur, valeurDeCombatDuJoueur);
                        system("PAUSE");
                        system("CLS");
                    }
                    break;
                case 3:
                    if (valeurDeCombatDuJoueur < valeurDeCombatSerpent)
                    {
                        printf("\n\n\nTu affrontes un Serpent ... Et tu perds !\nRetourne t'entrainer un peu, tu n'as pas le niveau !\n\n");
                        system("PAUSE");
                        system("CLS");
                    }
                    else
                    {
                        printf("\n\n\nTu affrontes un Serpent ... Et tu le bats !\n");
                        niveauDuJoueur ++;
                        valeurDeCombatDuJoueur += 5;
                        printf("Tu es desormais niveau %d, et as donc %d de valeur de combat.\n\n", niveauDuJoueur, valeurDeCombatDuJoueur);
                        system("PAUSE");
                        system("CLS");
                    }
                    break;
                case 4:
                    if (valeurDeCombatDuJoueur < valeurDeCombatLoup)
                    {
                        printf("\n\n\nTu affrontes un Loup ... Et tu perds !\nRetourne t'entrainer un peu, tu n'as pas le niveau !\n\n");
                        system("PAUSE");
                        system("CLS");
                    }
                    else
                    {
                        printf("\n\n\nTu affrontes un Loup ... Et tu le bats !\n");
                        niveauDuJoueur ++;
                        valeurDeCombatDuJoueur += 5;
                        printf("Tu es desormais niveau %d, et as donc %d de valeur de combat.\n\n", niveauDuJoueur, valeurDeCombatDuJoueur);
                        system("PAUSE");
                        system("CLS");
                    }
                    break;
                case 5:
                    if (valeurDeCombatDuJoueur < valeurDeCombatOurs)
                    {
                        printf("\n\n\nTu affrontes un Ours ... Et tu perds !\nRetourne t'entrainer un peu, tu n'as pas le niveau !\n\n");
                        system("PAUSE");
                        system("CLS");
                    }
                    else
                    {
                        printf("\n\n\nTu affrontes un Ours ... Et tu le bats !\nBravo, tu as presque fini le jeu, continue un peu jusqu'au "
                            "niveau 10 !\n\n");
                        niveauDuJoueur ++;
                        valeurDeCombatDuJoueur += 5;
                        system("PAUSE");
                        system("CLS");
                    }
                    break;
                case 6:
                    return 0;
                    break;
                default:
                    printf("Il y a eu un probleme. Retour au menu.\n\n");
                    system("PAUSE");
                    system("CLS");
                    break;
            }
        }
    
        while (niveauDuJoueur >= 10 && finiLeJeu == 0)
        {
            printf("Tu as debloque un monstre bonus, le terrible Dragon !\nSache cependant, aventurier, que tu n'as toujours pas le "
                "niveau de l'affronter. Entraine-toi sur ces Ogres en attendant. Tu pourras defier le Dragon quand tu te sentiras pret.\n\n"
                "1. S'entrainer contre un Ogre\n"
                "2. Affronter le Dragon\n"
                "3. Quitter le jeu\n"
                "\nQuel est ton choix ? ");
            scanf("%d", &choixMonstre);
    
            switch (choixMonstre)
            {
                case 1:
                    printf("\n\n\nTu affrontes un Ogre ... Et tu le bats !\n");
                    niveauDuJoueur ++;
                    valeurDeCombatDuJoueur += 5;
                    printf("Tu es desormais niveau %d, et as donc %d de valeur de combat.\n\n", niveauDuJoueur, valeurDeCombatDuJoueur);
                    system("PAUSE");
                    system("CLS");
                    break;
                case 2:
                    if (valeurDeCombatDuJoueur < valeurDeCombatDragon)
                    {
                        printf("\n\n\nTu te diriges vers la caverne ou se tapie le Dragon ... Ca y est, tu sens que l'air se rechauffe ... "
                        "Tu cours vers lui en hurlant, ton epee dans les mains ... Et tu te fais massacrer, d'un revers de la patte !\n"
                        "Retourne t'entrainer un peu, tu n'as pas le niveau !\n\n");
                        system("PAUSE");
                        system("CLS");
                    }
                    else
                    {
                        printf("\n\n\nTu te diriges vers la caverne ou se tapie le Dragon ... Ca y est, tu sens que l'air se rechauffe ... "
                        "Tu cours vers lui en hurlant, ton epee dans les mains ... Le combat est rude, tu ne vois plus rien, mais tu sens "
                        "son souffle chaud, alors tu continues a frapper ... Et tu lui perces le coeur !\nBravo, tu as vaincu le terrible "
                        "Dragon, tu as sauve le monde !\n\n");
                        finiLeJeu = 1;
                        system("PAUSE");
                        system("CLS");
                    }
                    break;
                default:
                    printf("Il y a eu un probleme. Retour au menu.\n\n");
                    system("PAUSE");
                    system("CLS");
                    break;
            }
    
        }
    
        printf("Petit aventurier est devenu Legende ... Bravo a toi !\n\n");
    
        return 0;
    }
    



    PS1 : J'ai remis des guillemets à chaque passage à la ligne pour faire plaisir à Code::Blocks

    PS2 : Il manque cruellement d'un facteur aléatoire, j'ai fais des recherches à ce sujet, mais je laisse tomber pour le moment (toujours une histoire de niveau :lol: ).
    • Partager sur Facebook
    • Partager sur Twitter
      22 juillet 2010 à 16:23:55

      Le facteur aléatoire normalement tu la déjà fait dans TP du pendu, puisque ta finit la partie I. (rand())
      • Partager sur Facebook
      • Partager sur Twitter
        22 juillet 2010 à 16:25:22

        Salut,

        Je trouve que tu as une bonne idée, il faut de l'imagination pour ça... !

        Avant d'améliorer peut-être le code, regarde si tu as d'autres idées, puis ensuite améliorer le tout ? Histoire d'avoir une vue d'ensemble... Enfin, c'est ce que je ferais..

        Deux ou trois petites idées d'amélioration pour te faire travailler un peu !

        - Demande le pseudo du joueur et donne le lorsqu'il a battu le finalboss.
        - Fait peut-être un choix d'arme, et tu peux faire que de temps à autres elle monte elle aussi, de sorte que tu puisses battre le dragon.
        - Le combat contre le dragon, donne le choix a des attaques, contre-attaque, de fait que si il crache du feu, tu puisse te cacher où l'attaquer, avec des conséquences.

        Pour faire un jeu comme ça tu as sûrement du avoir de l'imagination, alors tu en trouveras sûrement d'autres !

        Bonne aventure :pirate: !

        EDIT : Attention, quand tu as l'option de taper le dragon ou les ogres, tu ne peux pas quitter le jeu, je viens de remarquer !

        Krak'
        • Partager sur Facebook
        • Partager sur Twitter
          22 juillet 2010 à 17:05:34

          Citation : krakmor


          - Demande le pseudo du joueur et donne le lorsqu'il a battu le finalboss.

          chaine de caractere dans la parite 2

          Citation : krakmor


          - Fait peut-être un choix d'arme, et tu peux faire que de temps à autres elle monte elle aussi, de sorte que tu puisses battre le dragon.
          - Le combat contre le dragon, donne le choix a des attaques, contre-attaque, de fait que si il crache du feu, tu puisse te cacher où l'attaquer, avec des conséquences.

          je n'ai rien a rajouter mais il faudra mettre des ficchier source (attaque du dragon, attaque du soldat...)
          • Partager sur Facebook
          • Partager sur Twitter
            22 juillet 2010 à 18:10:33

            Tu pourrais rajouter des fonctions, car 170 cases pour un main c'est moyen(enfin je trouve), fait les personnages vraiment combattre, (si tu veux vraiment bien le faire) att un peu tout de même pour les structures^^
            • Partager sur Facebook
            • Partager sur Twitter
            http://cpp-rendering.io : Vous trouverez tout ce dont vous avez besoin sur Vulkan / OpenGL et le rendu 3D !
              22 juillet 2010 à 19:08:47

              @Kahite : Pendu c'est le TP de la partie II ;)

              Bah merci à vous de vos conseils, j'entame la partie II et quand je l'aurai finie je pense que j'en saurai assez pour compléter tout ça ...
              • Partager sur Facebook
              • Partager sur Twitter
                22 juillet 2010 à 19:25:47

                Idée sympa, mais sa serais mieux si on combattait les monstres :-°
                ps: il est dangereux ton castor...
                • Partager sur Facebook
                • Partager sur Twitter
                  22 juillet 2010 à 19:50:43

                  Pour les monstres j'ai mis ce qui m'est venu à l'esprit, j'ai pas trop cherché à approfondir ... tout comme la narration, c'est un peu gnan-gnan, mais bon ... ^^

                  EDIT : J'ai en fait utilisé des fonctions, une pour chacun des deux menus et une troisième pour le combat - je me suis rendu compte que je galérais un peu sur ce point, fallait que je pratique :lol:
                  J'ai aussi réglé le problème qui empêchait de quitter sur le second menu.


                  #include <stdio.h>
                  #include <stdlib.h>
                  
                  int menu_depart()
                  {
                      int choix = 0;
                  
                      while (choix < 1 || choix > 6)
                      {
                          printf("Bonjour aventurier.\n\n\n"
                              "Quel monstre veux-tu combattre ? Entre le numero correspondant.\n"
                              "1. Lapin\n"
                              "2. Castor\n"
                              "3. Serpent\n"
                              "4. Loup\n"
                              "5. Ours\n"
                              "6. Quitter le jeu\n"
                              "\n Votre choix ? ");
                          scanf("%d", &choix);
                  
                          system("CLS");
                      }
                  
                      return choix;
                  }
                  
                  int menu_fin()
                  {
                      int choix = 0;
                  
                      while (choix < 1 || choix > 3)
                      {
                          printf("Tu as debloque un monstre bonus, le terrible Dragon !\nMais es-tu suffisamment puissant pour le vaincre ? "
                              "Entraine-toi sur ces Ogres en attendant. Tu pourras defier le Dragon quand tu te sentiras pret.\n\n"
                              "1. S'entrainer contre un Ogre\n"
                              "2. Affronter le Dragon\n"
                              "3. Quitter le jeu\n"
                              "\nQuel est ton choix ? ");
                          scanf("%d", &choix);
                  
                          system("CLS");
                      }
                  
                      return choix;
                  }
                  
                  int combat(int combatPersonnage, int combatAdversaire)
                  {
                      return combatPersonnage - combatAdversaire;
                  }
                  
                  int main(int argc, char *argv[])
                  {
                      int niveauDuJoueur = 1;
                      int valeurDeCombatDuJoueur = 5;
                      int valeurDeCombatCastor = 10;
                      int valeurDeCombatSerpent = 15;
                      int valeurDeCombatLoup = 20;
                      int valeurDeCombatOurs = 30;
                      int valeurDeCombatDragon = 75;
                      int finiLeJeu = 0;
                      int resultatCombat = 0;
                  
                      while (niveauDuJoueur < 10)
                      {
                          switch (menu_depart())
                          {
                              case 1:
                                  printf("\n\n\nTu affrontes un Lapin ... Et tu le bats !\n");
                                  niveauDuJoueur ++;
                                  valeurDeCombatDuJoueur += 5;
                                  printf("Tu es desormais niveau %d, et as donc %d de valeur de combat.\n\n", niveauDuJoueur, valeurDeCombatDuJoueur);
                                  system("PAUSE");
                                  system("CLS");
                                  break;
                              case 2:
                                  resultatCombat = combat(valeurDeCombatDuJoueur, valeurDeCombatCastor);
                                  if (resultatCombat < 0)
                                  {
                                      printf("\n\n\nTu affrontes un Castor ... Et tu perds !\nRetourne t'entrainer un peu, tu n'as pas le niveau !\n\n");
                                      system("PAUSE");
                                      system("CLS");
                                  }
                                  else
                                  {
                                      printf("\n\n\nTu affrontes un Castor ... Et tu le bats !\n");
                                      niveauDuJoueur ++;
                                      valeurDeCombatDuJoueur += 5;
                                      printf("Tu es desormais niveau %d, et as donc %d de valeur de combat.\n\n", niveauDuJoueur, valeurDeCombatDuJoueur);
                                      system("PAUSE");
                                      system("CLS");
                                  }
                                  break;
                              case 3:
                                  resultatCombat = combat(valeurDeCombatDuJoueur, valeurDeCombatSerpent);
                                  if (resultatCombat < 0)
                                  {
                                      printf("\n\n\nTu affrontes un Serpent ... Et tu perds !\nRetourne t'entrainer un peu, tu n'as pas le niveau !\n\n");
                                      system("PAUSE");
                                      system("CLS");
                                  }
                                  else
                                  {
                                      printf("\n\n\nTu affrontes un Serpent ... Et tu le bats !\n");
                                      niveauDuJoueur ++;
                                      valeurDeCombatDuJoueur += 5;
                                      printf("Tu es desormais niveau %d, et as donc %d de valeur de combat.\n\n", niveauDuJoueur, valeurDeCombatDuJoueur);
                                      system("PAUSE");
                                      system("CLS");
                                  }
                                  break;
                              case 4:
                                  resultatCombat = combat(valeurDeCombatDuJoueur, valeurDeCombatLoup);
                                  if (resultatCombat < 0)
                                  {
                                      printf("\n\n\nTu affrontes un Loup ... Et tu perds !\nRetourne t'entrainer un peu, tu n'as pas le niveau !\n\n");
                                      system("PAUSE");
                                      system("CLS");
                                  }
                                  else
                                  {
                                      printf("\n\n\nTu affrontes un Loup ... Et tu le bats !\n");
                                      niveauDuJoueur ++;
                                      valeurDeCombatDuJoueur += 5;
                                      printf("Tu es desormais niveau %d, et as donc %d de valeur de combat.\n\n", niveauDuJoueur, valeurDeCombatDuJoueur);
                                      system("PAUSE");
                                      system("CLS");
                                  }
                                  break;
                              case 5:
                                  resultatCombat = combat(valeurDeCombatDuJoueur, valeurDeCombatOurs);
                                  if (resultatCombat < 0)
                                  {
                                      printf("\n\n\nTu affrontes un Ours ... Et tu perds !\nRetourne t'entrainer un peu, tu n'as pas le niveau !\n\n");
                                      system("PAUSE");
                                      system("CLS");
                                  }
                                  else
                                  {
                                      printf("\n\n\nTu affrontes un Ours ... Et tu le bats !\nBravo, tu as presque fini le jeu, continue un peu jusqu'au "
                                          "niveau 10 !\n\n");
                                      niveauDuJoueur ++;
                                      valeurDeCombatDuJoueur += 5;
                                      system("PAUSE");
                                      system("CLS");
                                  }
                                  break;
                              case 6:
                                  return 0;
                                  break;
                              default:
                                  printf("Il y a eu un probleme. Retour au menu.\n\n");
                                  system("PAUSE");
                                  system("CLS");
                                  break;
                          }
                      }
                  
                      while (niveauDuJoueur >= 10 && finiLeJeu == 0)
                      {
                          switch (menu_fin())
                          {
                              case 1:
                                  printf("\n\n\nTu affrontes un Ogre ... Et tu le bats !\n");
                                  niveauDuJoueur ++;
                                  valeurDeCombatDuJoueur += 5;
                                  printf("Tu es desormais niveau %d, et as donc %d de valeur de combat.\n\n", niveauDuJoueur, valeurDeCombatDuJoueur);
                                  system("PAUSE");
                                  system("CLS");
                                  break;
                              case 2:
                                  resultatCombat = combat(valeurDeCombatDuJoueur, valeurDeCombatDragon);
                                  if (resultatCombat < 0)
                                  {
                                      printf("\n\n\nTu te diriges vers la caverne ou se tapie le Dragon ... Ca y est, tu sens que l'air se rechauffe ... "
                                      "Tu cours vers lui en hurlant, ton epee dans les mains ... Et tu te fais massacrer, d'un revers de la patte !\n"
                                      "Retourne t'entrainer un peu, tu n'as pas le niveau !\n\n");
                                      system("PAUSE");
                                      system("CLS");
                                  }
                                  else
                                  {
                                      printf("\n\n\nTu te diriges vers la caverne ou se tapie le Dragon ... Ca y est, tu sens que l'air se rechauffe ... "
                                      "Tu cours vers lui en hurlant, ton epee dans les mains ... Le combat est rude, tu ne vois plus rien, mais tu sens "
                                      "son souffle chaud, alors tu continues a frapper ... Et tu lui perces le coeur !\nBravo, tu as vaincu le terrible "
                                      "Dragon, tu as sauve le monde !\n\n");
                                      finiLeJeu = 1;
                                      system("PAUSE");
                                      system("CLS");
                                  }
                                  break;
                              case 3:
                                  return 0;
                                  break;
                              default:
                                  printf("Il y a eu un probleme. Retour au menu.\n\n");
                                  system("PAUSE");
                                  system("CLS");
                                  break;
                          }
                  
                      }
                  
                      printf("Petit aventurier est devenu Legende ... Bravo a toi !\n\n");
                  
                      return 0;
                  }
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                    22 juillet 2010 à 23:15:02

                    Citation : Minimas

                    @Kahite : Pendu c'est le TP de la partie II ;)

                    Bah merci à vous de vos conseils, j'entame la partie II et quand je l'aurai finie je pense que j'en saurai assez pour compléter tout ça ...


                    Jvoulai dire Plus Ou Moins, d'ailleurs c'est le lien que j'ai donnée
                    • Partager sur Facebook
                    • Partager sur Twitter
                      23 juillet 2010 à 6:43:19

                      fait une fonction pour chaque monstre (
                      void lapin((parametre en pointeur),(parametre en pointeur),...)
                      {
                           //code
                      }
                      
                      (si c'est possible, en fonction de t capacité)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        23 juillet 2010 à 9:56:13

                        Hm oui Kahite désolé, en fait le TP je l'avais survolé, étant donné que ce codage est déjà mon fil rouge :-*
                        Mais apparemment on y apprend des trucs donc je les fait désormais.

                        Très bonne idée C159, j'arrive aux pointeurs, là où j'ai bloqué les deux dernières fois que j'ai essayé d'apprendre, donc je pense que je vais faire une 'tite pause pour améliorer le système.

                        Je pense rajouter au moins attaque et défense plutôt que "valeur de combat", si j'y arrive je ferai que le joueur décide d'où il met ses points de caractéristique, et j'vais faire un système de combat plus évolué.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          23 juillet 2010 à 10:18:28

                          Bonjour,

                          Ce que tu pourrais faire aussi, c'est essayer de rendre le système de combat plus stratégique et de mettre de l'expérience en plus des niveaux, et comme dans la plupart des RPG donner un niveau au joueur dès qu'il a atteint tant d'expérience, pour faire ça c'est pas très dur, tu peux le faire en une seule fonction que tu appelles à la fin de chaque combat.

                          Ojii
                          • Partager sur Facebook
                          • Partager sur Twitter
                            23 juillet 2010 à 10:20:55

                            Salut, pas besoin d'être désolé.
                            T'as de bonnes idées, sinon au lieu d'une seule variable valeur de combat, tu peut mettre plusieurs choses (Exemple : point de vie, mana, attaque, defense ...).

                            Ensuite tu peut ajouter différents type de personnages à choisir (Exemple : Magicien (plus de mana), Guerrier (plus de PV))

                            Ou encore différents type d'armes et d'armures (exemple: pas d'armure, armure lourde, bouclier, épée, arbalète, hache, ...)

                            J'm'embale peut-être un peu :D .
                            Regarde le chapitre sur les structures, ca permettra de faire les améliorations que je t'ai dis plus simplement.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              23 juillet 2010 à 11:26:22

                              @Ojii : Oui, c'est prévu avec les caractéristiques (pour gagner des points à dépenser il faut gagner des niveaux), et chaque monstre (oui, le lapin et le castor sont des monstres) donnera un certain nombre d'expérience. :)

                              @Kahite : non, tu ne t'emballes pas, c'est prévu à long terme =p Ainsi qu'une boutique pour acheter les armes, une autre pour les armures ... Mais ça se fera bien plus tard, juste avant d'entamer la création de la fenêtre je pense. Pour le moment, bonne nouvelle, je comprend mieux les pointeurs qu'avant x) (d'ailleurs le chapitre a été refait non ?). Ah oui, j'oubliais : ton lien dans ta signature, Ça coule de Source, vraiment top.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                23 juillet 2010 à 11:29:39

                                J'ai un peu l'impréssion que ton code se répète au niveau des combats.

                                Je m'explique : A mon avis, on peu réduire un peu le code en faisant une fonction combat, qui prendrais en paramètre par exemple un pointeur vers les caractéristiques de ton personnage (pointeur pour pouvoir les modifiers), et aussi les caractéristiques(+nom de l'ennemi, éventuellement un message spécial si ton personnage gagne ou perd, qui peut éventuellement renvoyer un int pour signaler le résultat du combat.

                                Enfin ce n'est qu'une ébauche (tu peux amélioré/modifier la fonction que je te propose) et tu peux faire d'autres choses après (comme créer une fonction qui permet au joueur de choisir arme/attaque, ou autre chose au début du combat, ou qui lui permet de réaliser des attaques spéciales ect...).
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  23 juillet 2010 à 11:31:43

                                  Je débute les pointeurs, je verrai, mais cela me semble une bonne idée :)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    23 juillet 2010 à 11:56:36

                                    De toutes façon, à mon avis, les idées te viendront au fur et à mesure que tu apprendras de nouvelles notions en C (éventuellement C++ après, surtout que les exemples donnés par M@téo se rapprochent de ton petit exercice).
                                    J'pense que ça peut être assez formateur d'améliorer au fur et à mesure ton programme à la fin de chaque nouveau chapitre.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      23 juillet 2010 à 12:01:27

                                      C'est exactement ce que je pensais faire, là j'ai créé deux nouveaux fichiers, un "menu.c" et un "combat.c" et les headers qui vont avec, suite au chapitre sur le sujet.

                                      A chaque avancée "conséquente" (je pense par exemple après le chapitre des pointeurs), je mettrai le nouveau code je pense, si ça vous dérange pas :D
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        23 juillet 2010 à 12:36:37

                                        Minimas, si c'est un projet, je suis d'accord pour t'aider a coder(etant donner que je me "debrouille en pointeur et en tableau et que toi tu les commences^^".

                                        Cordialement Qnope
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        http://cpp-rendering.io : Vous trouverez tout ce dont vous avez besoin sur Vulkan / OpenGL et le rendu 3D !
                                          23 juillet 2010 à 12:51:00

                                          Hm je sais pas trop encore si c'est un projet, ça pourrai le devenir, mais pour l'instant c'est un fil rouge pour l'apprentissage des cours.
                                          Donc je vais finir les cours comme ça, et puis si je décide d'aller plus loin je te recontacte :)

                                          Merci de cette proposition
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            23 juillet 2010 à 13:19:22

                                            Bonjour,

                                            Pour améliorer le code fait en un portable... Peut même compiler sous linux.

                                            Faut enlever les trucs du genre
                                            sytem("PAUSE");
                                            

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              23 juillet 2010 à 13:22:27

                                              Mais il me les faut, existe-t-il une commande identique et portable ?
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                23 juillet 2010 à 13:35:21

                                                Tu l'as code^^, par exemple pour system CLS

                                                tu fais

                                                for(i=0; i<500; i++)
                                                printf("\n");
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                http://cpp-rendering.io : Vous trouverez tout ce dont vous avez besoin sur Vulkan / OpenGL et le rendu 3D !
                                                  23 juillet 2010 à 13:37:10

                                                  Mais ça risque d'alourdir un max le programme non ? Il n'existe aucune fonction "universelle" ?
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    23 juillet 2010 à 14:09:30

                                                    Ca alourdit moins le programme que un system cls
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    http://cpp-rendering.io : Vous trouverez tout ce dont vous avez besoin sur Vulkan / OpenGL et le rendu 3D !
                                                      23 juillet 2010 à 16:01:35

                                                      @qnope : Merci de ce conseil, je le mettrai en place à la prochaine "grosse" modif.

                                                      Installation des pointeurs, ouais ils changent rien, mais ça entraîne :lol:

                                                      main.c
                                                      #include <stdio.h>
                                                      #include <stdlib.h>
                                                      
                                                      int main(int argc, char *argv[])
                                                      {
                                                          int niveauDuJoueur = 1;
                                                          int valeurDeCombatDuJoueur = 5;
                                                          int *pointeurValeurDeCombatDuJoueur = &valeurDeCombatDuJoueur;
                                                          int valeurDeCombatCastor = 10;
                                                          int *pointeurValeurDeCombatCastor = &valeurDeCombatCastor;
                                                          int valeurDeCombatSerpent = 15;
                                                          int *pointeurValeurDeCombatSerpent = &valeurDeCombatSerpent;
                                                          int valeurDeCombatLoup = 20;
                                                          int *pointeurValeurDeCombatLoup = &valeurDeCombatLoup;
                                                          int valeurDeCombatOurs = 30;
                                                          int *pointeurValeurDeCombatOurs = &valeurDeCombatOurs;
                                                          int valeurDeCombatDragon = 75;
                                                          int *pointeurValeurDeCombatDragon = &valeurDeCombatDragon;
                                                          int finiLeJeu = 0;
                                                          int resultatCombat = 0;
                                                      
                                                      
                                                          while (niveauDuJoueur < 10)
                                                          {
                                                              switch (menu_depart())
                                                              {
                                                                  case 1:
                                                                      printf("\n\n\nTu affrontes un Lapin ... Et tu le bats !\n");
                                                                      niveauDuJoueur ++;
                                                                      *pointeurValeurDeCombatDuJoueur += 5;
                                                                      printf("Tu es desormais niveau %d, et as donc %d de valeur de combat.\n\n", niveauDuJoueur, *pointeurValeurDeCombatDuJoueur);
                                                                      system("PAUSE");
                                                                      system("CLS");
                                                                      break;
                                                                  case 2:
                                                                      resultatCombat = combat(pointeurValeurDeCombatDuJoueur, pointeurValeurDeCombatCastor);
                                                                      if (resultatCombat < 0)
                                                                      {
                                                                          printf("\n\n\nTu affrontes un Castor ... Et tu perds !\nRetourne t'entrainer un peu, tu n'as pas le niveau !\n\n");
                                                                          system("PAUSE");
                                                                          system("CLS");
                                                                      }
                                                                      else
                                                                      {
                                                                          printf("\n\n\nTu affrontes un Castor ... Et tu le bats !\n");
                                                                          niveauDuJoueur ++;
                                                                          *pointeurValeurDeCombatDuJoueur += 5;
                                                                          printf("Tu es desormais niveau %d, et as donc %d de valeur de combat.\n\n", niveauDuJoueur, *pointeurValeurDeCombatDuJoueur);
                                                                          system("PAUSE");
                                                                          system("CLS");
                                                                      }
                                                                      break;
                                                                  case 3:
                                                                      resultatCombat = combat(pointeurValeurDeCombatDuJoueur, pointeurValeurDeCombatSerpent);
                                                                      if (resultatCombat < 0)
                                                                      {
                                                                          printf("\n\n\nTu affrontes un Serpent ... Et tu perds !\nRetourne t'entrainer un peu, tu n'as pas le niveau !\n\n");
                                                                          system("PAUSE");
                                                                          system("CLS");
                                                                      }
                                                                      else
                                                                      {
                                                                          printf("\n\n\nTu affrontes un Serpent ... Et tu le bats !\n");
                                                                          niveauDuJoueur ++;
                                                                          *pointeurValeurDeCombatDuJoueur += 5;
                                                                          printf("Tu es desormais niveau %d, et as donc %d de valeur de combat.\n\n", niveauDuJoueur, *pointeurValeurDeCombatDuJoueur);
                                                                          system("PAUSE");
                                                                          system("CLS");
                                                                      }
                                                                      break;
                                                                  case 4:
                                                                      resultatCombat = combat(pointeurValeurDeCombatDuJoueur, pointeurValeurDeCombatLoup);
                                                                      if (resultatCombat < 0)
                                                                      {
                                                                          printf("\n\n\nTu affrontes un Loup ... Et tu perds !\nRetourne t'entrainer un peu, tu n'as pas le niveau !\n\n");
                                                                          system("PAUSE");
                                                                          system("CLS");
                                                                      }
                                                                      else
                                                                      {
                                                                          printf("\n\n\nTu affrontes un Loup ... Et tu le bats !\n");
                                                                          niveauDuJoueur ++;
                                                                          *pointeurValeurDeCombatDuJoueur += 5;
                                                                          printf("Tu es desormais niveau %d, et as donc %d de valeur de combat.\n\n", niveauDuJoueur, *pointeurValeurDeCombatDuJoueur);
                                                                          system("PAUSE");
                                                                          system("CLS");
                                                                      }
                                                                      break;
                                                                  case 5:
                                                                      resultatCombat = combat(pointeurValeurDeCombatDuJoueur, pointeurValeurDeCombatOurs);
                                                                      if (resultatCombat < 0)
                                                                      {
                                                                          printf("\n\n\nTu affrontes un Ours ... Et tu perds !\nRetourne t'entrainer un peu, tu n'as pas le niveau !\n\n");
                                                                          system("PAUSE");
                                                                          system("CLS");
                                                                      }
                                                                      else
                                                                      {
                                                                          printf("\n\n\nTu affrontes un Ours ... Et tu le bats !\nBravo, tu as presque fini le jeu, continue un peu jusqu'au "
                                                                              "niveau 10 !\n\n");
                                                                          niveauDuJoueur ++;
                                                                          *pointeurValeurDeCombatDuJoueur += 5;
                                                                          system("PAUSE");
                                                                          system("CLS");
                                                                      }
                                                                      break;
                                                                  case 6:
                                                                      return 0;
                                                                      break;
                                                                  default:
                                                                      printf("Il y a eu un probleme. Retour au menu.\n\n");
                                                                      system("PAUSE");
                                                                      system("CLS");
                                                                      break;
                                                              }
                                                          }
                                                      
                                                          while (niveauDuJoueur >= 10 && finiLeJeu == 0)
                                                          {
                                                              switch (menu_fin())
                                                              {
                                                                  case 1:
                                                                      printf("\n\n\nTu affrontes un Ogre ... Et tu le bats !\n");
                                                                      niveauDuJoueur ++;
                                                                      *pointeurValeurDeCombatDuJoueur += 5;
                                                                      printf("Tu es desormais niveau %d, et as donc %d de valeur de combat.\n\n", niveauDuJoueur, *pointeurValeurDeCombatDuJoueur);
                                                                      system("PAUSE");
                                                                      system("CLS");
                                                                      break;
                                                                  case 2:
                                                                      resultatCombat = combat(pointeurValeurDeCombatDuJoueur, pointeurValeurDeCombatDragon);
                                                                      if (resultatCombat < 0)
                                                                      {
                                                                          printf("\n\n\nTu te diriges vers la caverne ou se tapie le Dragon ... Ca y est, tu sens que l'air se rechauffe ... "
                                                                          "Tu cours vers lui en hurlant, ton epee dans les mains ... Et tu te fais massacrer, d'un revers de la patte !\n"
                                                                          "Retourne t'entrainer un peu, tu n'as pas le niveau !\n\n");
                                                                          system("PAUSE");
                                                                          system("CLS");
                                                                      }
                                                                      else
                                                                      {
                                                                          printf("\n\n\nTu te diriges vers la caverne ou se tapie le Dragon ... Ca y est, tu sens que l'air se rechauffe ... "
                                                                          "Tu cours vers lui en hurlant, ton epee dans les mains ... Le combat est rude, tu ne vois plus rien, mais tu sens "
                                                                          "son souffle chaud, alors tu continues a frapper ... Et tu lui perces le coeur !\nBravo, tu as vaincu le terrible "
                                                                          "Dragon, tu as sauve le monde !\n\n");
                                                                          finiLeJeu = 1;
                                                                          system("PAUSE");
                                                                          system("CLS");
                                                                      }
                                                                      break;
                                                                  case 3:
                                                                      return 0;
                                                                      break;
                                                                  default:
                                                                      printf("Il y a eu un probleme. Retour au menu.\n\n");
                                                                      system("PAUSE");
                                                                      system("CLS");
                                                                      break;
                                                              }
                                                      
                                                          }
                                                      
                                                          printf("Petit aventurier est devenu Legende ... Bravo a toi !\n\n");
                                                      
                                                          return 0;
                                                      }
                                                      


                                                      menu.c
                                                      #include <stdio.h>
                                                      #include <stdlib.h>
                                                      #include "menu.h"
                                                      
                                                      int menu_depart()
                                                      {
                                                          int choix = 0;
                                                      
                                                          while (choix < 1 || choix > 6)
                                                          {
                                                              printf("Bonjour aventurier.\n\n\n"
                                                                  "Quel monstre veux-tu combattre ? Entre le numero correspondant.\n"
                                                                  "1. Lapin\n"
                                                                  "2. Castor\n"
                                                                  "3. Serpent\n"
                                                                  "4. Loup\n"
                                                                  "5. Ours\n"
                                                                  "6. Quitter le jeu\n"
                                                                  "\n Votre choix ? ");
                                                              scanf("%d", &choix);
                                                      
                                                              system("CLS");
                                                          }
                                                      
                                                          return choix;
                                                      }
                                                      
                                                      int menu_fin()
                                                      {
                                                          int choix = 0;
                                                      
                                                          while (choix < 1 || choix > 3)
                                                          {
                                                              printf("Tu as debloque un monstre bonus, le terrible Dragon !\nMais es-tu suffisamment puissant pour le vaincre ? "
                                                                  "Entraine-toi sur ces Ogres en attendant. Tu pourras defier le Dragon quand tu te sentiras pret.\n\n"
                                                                  "1. S'entrainer contre un Ogre\n"
                                                                  "2. Affronter le Dragon\n"
                                                                  "3. Quitter le jeu\n"
                                                                  "\nQuel est ton choix ? ");
                                                              scanf("%d", &choix);
                                                      
                                                              system("CLS");
                                                          }
                                                      
                                                          return choix;
                                                      }
                                                      


                                                      combat.c
                                                      #include <stdio.h>
                                                      #include <stdlib.h>
                                                      #include "combat.h"
                                                      
                                                      int combat(int *pointeurCombatPersonnage, int *pointeurCombatAdversaire)
                                                      {
                                                          return *pointeurCombatPersonnage - *pointeurCombatAdversaire;
                                                      }
                                                      



                                                      (Bon je vous met pas les fichiers .h hein :-° )
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        23 juillet 2010 à 16:20:42

                                                        Ah oui, pas faux :*
                                                        C'est corrigé, merci !
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          23 juillet 2010 à 17:54:21

                                                          Tu peux enlever tous les pointeursur valeurs

                                                          Et tu envoies l'adresse directement^^
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          http://cpp-rendering.io : Vous trouverez tout ce dont vous avez besoin sur Vulkan / OpenGL et le rendu 3D !

                                                          Petit exercice personnel

                                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                          • Editeur
                                                          • Markdown