Switch et modification de valeurs

Résolu
moumouteb Messages postés 192 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 28 février 2011 - 5 août 2005 à 19:41
moumouteb Messages postés 192 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 28 février 2011 - 24 août 2005 à 14:23
Voila l'extrait d'un RPG en mode texte:



int nChoix;

cin >> nChoix;



switch(nChoix)

{

case 1:

ennemie.nVie-= (nPAttaque / nPDefence * 10 ) + rand() % nPAttaque;



case 2:

ennemie.nVie -= (nMAttaque / nMDefence * 10 ) + rand() % nMAttaque;



case 3:

int nComboAttaque = nPAttaque + nMAttaque;

int nComboDef = ennemie.nPDefence + ennemie.nMDefence;

ennemie.nVie -= (nComboAttaque / nComboDef * 10 ) + rand() % (nComboAttaque / 2);

}



Le problème c'est que les modifications apportées à ennemie.nVie (qui
sont des membres publiques) sont bien prises en compte lors de
l'exécution du switch" mais à la sortie de celui-ci les valeurs
redeviennent celles d'origine. En revanche lorsque cette action est
traitée avec l'instruction "if" les modifications sont concervées (mais
le code est plus lourd).

Y aurait-il une solution?

6 réponses

magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
5 août 2005 à 23:49
pr le passage des param

utilise une référence ou un pointeur plutot qu'une copie

___________________________________________________________
Magicalement
Nono
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
5 août 2005 à 19:44
tu oublies sans doute les break après chaque case
moumouteb Messages postés 192 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 28 février 2011 10
5 août 2005 à 20:02
Désolet le code que j'ai publié était imcomplet (il manquait bien les break) mais même avec ceux là le problème reste le même.

Voici le code modifié:



switch(nChoix)

{

case 1:

ennemie.nVie-= (nPAttaque / nPDefence * 10 ) + rand() % nPAttaque;

break;



case 2:

ennemie.nVie -= (nMAttaque / nMDefence * 10 ) + rand() % nMAttaque;

break;



case 3:

int nComboAttaque = nPAttaque + nMAttaque;

int nComboDef = ennemie.nPDefence + ennemie.nMDefence;

ennemie.nVie -= (nComboAttaque / nComboDef * 10 ) + rand() % (nComboAttaque / 2);

break;

}
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
5 août 2005 à 20:15
Si c'est une fonction (membre), montre nous son prototype...;

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xterminhate Messages postés 371 Date d'inscription dimanche 4 janvier 2004 Statut Membre Dernière intervention 23 septembre 2009
6 août 2005 à 10:11
Voila que Magic prend l'aspiration et me dépasse....

Cordialement,
Xterminhate.
moumouteb Messages postés 192 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 28 février 2011 10
24 août 2005 à 14:23
Merci beaucoup.

Désolet de ne pas avoir répondu plus tôt mais j'étais en vacance.
Rejoignez-nous