DEV-CPP, RPG, combat, while ne lis pas l'intérieur de la boucle....

Heakons Messages postés 8 Date d'inscription samedi 15 janvier 2005 Statut Membre Dernière intervention 14 juin 2005 - 14 juin 2005 à 02:10
Heakons Messages postés 8 Date d'inscription samedi 15 janvier 2005 Statut Membre Dernière intervention 14 juin 2005 - 14 juin 2005 à 13:05
Bon et bien je suis entrain de faire un petit programme RPG, sous DOS
avec Dev-CPP, et lorsque le héros arrive au combat sa produit le
résultat suivant:

////////////////résultat///////////////////////////

Garde : Je vais t'eclater la face

--------End------------------------



Mon code:

////////////////Mon Code//////////////////////



//Les includes de librairies:

#include

using namespace std; //Cet instruction permet d'éviter d'écrire std:: devant cout, cin, endl...;

//Déclaration des constantes:

enum village { Hi=1, Bifuu, Mizo, Chi, Yuki,/*village secret*/ Oto=101};

//Déclaration des variables:

bool myturn=1; //Quand c'est a vous de jouer ou pas

char name[28]; //Le nom du joueur;

char origine; //Le village d'origine du joueur;

int life, lifemax, XP, lvl; //Les variables se rapportant au héros

int moveEnnemy; //Les variables qui se rapporte au monstre

int idcombat; //Pour les combats

//Prototype de fonction:

int mainmenu(); //Le menu principale;

int option(); //Le menu option qui est info pour le moement;

int origineM(); //Le prototype pour le choix du village;

int nameM(); //La fonction pour le nom;

int intro(); //Le commencement du jeux;

int combatD(); //Le prototype de fonction pour les combat défini

//Première fonction (main);

int main()

{

mainmenu(); //Apelle le menu principale;

cout << "\n\t\t***Fin!***\n"; // La Fin...;

char response;

cin >> response;

return 0;

}



// Les musiks



int mainmenu()

{

cout << "Bienvenu dans:\n";

cout << "\t\t\tQuest of Element\n";

cout << "que desirez-vous?\n";

cout << "1- Jouez\n";

cout << "2- Info\n";

int response;

cin >> response;

if (response==1)

{

origineM();

}

if (response==2)

{

option();

}

return 0;

}



int option()

{

cout << "\nMenu Info\n";

cout << "Bientot un menu info\n";

system ("PAUSE\n\n");

return 0;

}



int origineM()

{

cout << "\nSur notre ile, 5 villages domnine, lequel vous represente...\n";

cout << "De quel clan et village venez vous?\n";

cout << "1- Hi\t (Feu)\n";

cout << "2- Bifuu (Vent)\n";

cout << "3- Mizo\t (Terre)\n";

cout << "4- Chi\t (Eau)\n";

cout << "5- Yuki\t (Neige)\n";

int choix;

cin >> choix;

switch(choix)

{

case 1:

{

cout << "Vous êtes originaire du village Hi\n\n";

origine=Hi;

nameM();

break;

}

case 2:

{

cout << "Vous êtes originaire du village Bifuu\n\n";

origine=Bifuu;

nameM();

break;

}

case 3:

{

cout << "Vous êtes originaire du village Mizo\n\n";

origine=Mizo;

nameM();

break;

}

case 4:

{

cout << "Vous êtes originaire du village Chi\n\n";

origine=Chi;

nameM();

break;

}

case 5:

{

cout << "Vous êtes originaire du village Yuki\n\n";

origine=Yuki;

nameM();

break;

}

case 101:

{

cout << "Vous êtes un ninja secret du village d'Oto\n\n";

origine=Oto;

nameM();

break;

}

default:

{

origineM();

break;

}

}

life=100;

lifemax=100;

return 0;

}



int nameM()

{

cout << "\nQuel est votre nom?\n";

cin >> name;

cout << "\nDonc votre nom est " << name << ", si je ne m'abuse?\n";

cout << "1- oui\n";

cout << "2- non\n";

int choixN;

cin >> choixN;

if (choixN==1)

{

intro();

}

if (choixN==2)

{

nameM();

}

return 0;

}

int intro()

{

cout << "\nLe 19eme Sousui du village Chuuoubu vous a lancer un message\n";

cout << "d'a l'aide, a vous et tous les plus jeune enfants, peu importe\n";

cout << "leur village, ils ont tous été appellez pour aidez l'ile\n";

cout << "d'un danger grossisant que les anciens n'ont pas su regler.\n";

cout << "Depuis la dernière guerre le nombre de soldat a chute et la releve\n";

cout << "s'etablie difficilement. Vous avez donc ete choisi pour nourir\n";

cout << "les rangs et allez les creatures de l'enfer qui ne cesse\n";

cout << "d'essayer d'envahir l'ile! ...Bonne chance!\n";

cout << "**Vous etes a Chuuoubu**\n\n";

cout << "Sousui : Bienvnue cher combattant, mais avant que vous soyez juger\n";

cout << "\tcomme l'un des n'autres, je voudrais vous faire passez\n";

cout << "\tun petit test... si vous n'y voyez pas d'objection.\n";

cout << name << " : Sa me fera plaisir de realiser vos demande!\n";

cout << "Sousui : Je veux juste testez tes capacités, tu devras combattre un\n";

cout << "\tdes membres de ma garde personnelle, n'oubli pas de ne pas le tuer...\n";

cout << name << " : Parfait!\n";

idcombat=1;

combatD();

return 0;

}



int combatD()

{

int HPennemy;



if (idcombat==1)

{

HPennemy=250;

cout << "\n\nGarde : Je vais t'eclater la face\n";

while (1)

{

if (life>lifemax) life=lifemax;

if (HPennemy<=75)

{

cout << "Garde : Je n'en peux plus... tu m'a vaincu\n";

cout << "**Vous gagnez 35 point d'expérience**\n";

XP=XP+35;

break;

}

if (life<=0) return 0;

if (myturn==true)

{

cout << "Que va faire " << name << "?\n";

cout
<< name << " : " << life << " life | " <<
lvl << " Level | " << XP << " Exp\n";

cout << "1- Attaquer";

cout << "2- Objet";

cout << "3- Fuir";

short int moveBattle;

cin >> moveBattle;

if (moveBattle==1)

{

cout << name << " Frappe de plein fouet...\n";

HPennemy=HPennemy - 47;

myturn=false;

}

if (moveBattle==2)

{

}

if (moveBattle==3)

{

cout
<< "Tu ne peux pas fuir lors de ton Initiation!\n";

}

if (myturn==false)

{

moveEnnemy=rand()%3;

if (moveEnnemy==1)

{

int puissanceCoup=rand()%12;


cout << "L'ennemy vous frappe de : " << puissanceCoup
<< "...\n";

life=life - puissanceCoup;

myturn=true;

}

if (moveEnnemy==2)

{

int puissanceCoup=rand()%12;


cout << "L'ennemy vous frappe de : " << puissanceCoup
<< "...\n";

life=life - puissanceCoup;

myturn=true;

}

if (moveEnnemy==3)

{

int guerison=rand()%30;


cout << "L'ennemy se regénere de " << guerison << "
point de vie.\n";

myturn=true;

}

}

}

}

}

return 0;

}



Je sais pas si quelqu'un peux m'aidé, mais sa serais gentil de votre pars.

Merci d'avance!

(:-- Heakons --:)

3 réponses

Heakons Messages postés 8 Date d'inscription samedi 15 janvier 2005 Statut Membre Dernière intervention 14 juin 2005
14 juin 2005 à 02:12
Et aussi, si quelqu'un sait comment appellez un fichier extern, sa serais vraimment sympa de m'expliquer le comment!!!
0
darfeuille Messages postés 63 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 25 juillet 2005
14 juin 2005 à 08:40
Je ne vois pas directement ou est le probleme, mais quelques conseils qui t'aideront a le trouver :

1/ fait tres attention a tes variables. C'est très dangereux de les
déclarer ainsi, en dehors de tout. Tu devrais plutôt faire un objet
pour ton héros, ou onjet pour chaque ennemi etc......

Ou alors au moins, n'en déclare qu'un minimum en dehors,

2/ tes variables (oui, toujours, le probleme vient de la je pense) sont initialisées un peu nimporte ou et de façon anarchique.



Je te conseille de faire ceci, au debut de ta fonction combat :



int combatD()

{

short int moveBattle; // faut le déclare ici, pas dans une boucle

int HPennemy = 250; // initialiser toutes les variables ici

myturn = 1;

lifemax = 100;

life = 100;



....

.....





}

Dans le cas ou tu ne veux pas les initialiser ici, passe les en
paramètre ou via un objet (c'est le mieux que tu puisse faire, je te le
conseille).

Essaye ca, a mon avis ca marchera :)

Tiens nous au courant,

Darfeuille
0
Heakons Messages postés 8 Date d'inscription samedi 15 janvier 2005 Statut Membre Dernière intervention 14 juin 2005
14 juin 2005 à 13:05
Merci, je vais tester cela aujourd'hui, et se soir je t'en donnerais des nouvelle, merci, mec!
0
Rejoignez-nous