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
3
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
0
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;

}
0
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...;
0

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.
0
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.
0
Rejoignez-nous