Salut à tous, voilà j'ai un petit soucis avec ma fonction return.
A partir de ma méthode 1, qui contient la variable hh, j'appelle une méthode 2 avec hh, qui elle même appelle une méthode 3 avec le même hh. Cette dernière méthode modifie la valeur de hh et la retourne à la méthode 2 qui la retourne à la méthode 1. Or lors du test, la variable hh de la méthode 1 n'est pas modifiée.
Voici un extrait de mon code, qui contient les détails du résumé ci-dessus :
(La méthode 1 est une boucle for qui modifie en permanence la valeur de hh)
Méthode 1 : Main
Code :
- ...
- for (s = 0, ss = 0, m = 0, mm = 0, h = 0, hh = 0, dbg = 0, ctrl = 0; ss != 10; )
- ...
- if (ctrl == 10 & s == 5 & ss == 9) Actions.dressage(hh);// affiche le menu d'actions toutes les 10 minutes
|
Méthode 2 : Actions.dressage
Code :
- public class Actions
- {
- public static int dressage(int hh)
- {
- Console.WriteLine("Votre aventure commence aujourd'hui. Il est minuit." );
- Console.WriteLine("Voulez-vous éduquer votre animal? (oui)(non)" );
- string rep = Console.ReadLine();
- if (rep == "oui" ) Dressage.compétences(hh);
- return hh;
- }
- }
|
Méthode 3 : Dressage.compétences
(la variable qui modifie hh est tps)
Code :
- public class Dressage
- {
- private bool cond;
- private int tps;
- private int ValComp;
- private string cmd;
- public static int compétences(int hh)
- {
- Dressage seNourrir = new Dressage();
- seNourrir.cmd = "se nourrir";
- seNourrir.cond = false;
- seNourrir.tps = 2;
- seNourrir.ValComp = 0;
- Dressage attaquer = new Dressage();
- attaquer.cmd = "attaquer";
- attaquer.cond = false;
- attaquer.tps = 2;
- attaquer.ValComp = 0;
- Dressage pister = new Dressage();
- pister.cmd = "pister";
- pister.cond = false;
- pister.tps = 3;
- pister.ValComp = 0;
- Console.WriteLine("Que voulez-vous apprendre à votre animal ?" );
- Console.WriteLine("(" + seNourrir.cmd + " ) " + "(" + attaquer.cmd + " ) " + "(" + pister.cmd + " )" );
- string rep = Console.ReadLine();
- switch (rep)
- {
- case "se nourrir": seNourrir.ValComp++; hh += seNourrir.tps; Console.WriteLine("La compétence 'se nourrir' de votre animal est de " + seNourrir.ValComp);
- break;
- case "attaquer": attaquer.ValComp++; hh += attaquer.tps; Console.WriteLine("La compétence 'attaquer' de votre animal est de " + attaquer.ValComp);
- break;
- case "pister": pister.ValComp++; hh += pister.tps; Console.WriteLine("La compétence 'pister' de votre animal est de " + pister.ValComp);
- break;
- }
- System.Threading.Thread.Sleep(2000);
- return hh;
- }
- }
|
Quelqu'un peut-il m'expliquer pourquoi quand je choisis une option entre "se nourrir" "attaquer" ou "pister", la valeur de hh qui est censée être modifiée ne se repporte pas sur le résultat du hh affiché dans la méthode Main ?
Merci d'avance pour vos réponses.
Ps : Si vous avez besoin du code complet pour mieux cerné l'erreur, je vous le posterais volontier.
Message édité par Durst1805 le 20-02-2008 à 05:09:10