Probleme modification de variable C#

Fermé
Durst1805 - 9 févr. 2008 à 04:29
 Durst1805 - 9 févr. 2008 à 20:31
Bonjour,
j'ai un petit souci avec un programme que j'essaye de mettre en place. J'ai créer un simulateur d'heure, et j'y ai intégré trois petites méthodes lesquelles servent respectivement à :

1. Afficher l'heure qu'il est, et si il est midi ou minuit.
2. Afficher la durée de vie de l'espèce A (les animaux).
3. Afficher la durée de vie de l'espèce B (les hommes).

Au fil du temps, la durée de vie de chaque espèce doit diminuer d'elle même. Pour cela j'utilise une variable dva (durée de vie a) et une variable dvb (durée de vie b) qui se décrémentent au fil du temps. Mon problème est que je fixe un instant précis de l'heure à laquelle la décrémentation doit se faire, une fois la bonne heure affichée, la durée de vie se décrémente bien, mais une fois l'heure passée, les variables se remettent à leur valeur par défaut, et donc l'espèce ne vieilli jamais.
Voici donc mon extrait de code, pour vous permettre de déceler l'erreur ou bien me dire ce que je devrait changer ou ajouter.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Vieillesse
{
    public class Programme
    {
        public static void Main(string[] args)
        {
            int ss;
            int s;
            int mm;
            int m;
            int hh;
            int h;
            int dbg;

            for (s = 0, ss = 0, m = 0, mm = 0, h = 0, hh = 0, dbg = 0; ss != 10; )
            {
                ss++;
                if (ss > 9) s++; // passe à s
                if (ss > 9) ss = 0; // remet ss à zéro
                if (s > 5) mm++; // passe à mm
                if (s > 5) s = 0; // remet s à zéro
                if (mm > 9) m++; // passe à m
                if (mm > 9) mm = 0; // remet mm à zéro
                if (m > 5) hh++; // passe à hh
                if (m > 5) m = 0; // remet m à zéro
                if (hh > 9) h++; // passe à h
                if (hh > 9) hh = 0; //remet hh à zéro
                if (h == 2 & hh == 4) dbg++;  // incrémente dbg
                if (h == 2 & hh == 4) s = 0;  // *
                if (h == 2 & hh == 4) ss = 0; // *
                if (h == 2 & hh == 4) m = 0;  // * remet les compteurs à zéro 
                if (h == 2 & hh == 4) mm = 0; // *
                if (h == 2 & hh == 4) h = 0;  //
                if (dbg == 1) hh = 0; // remet le compteur hh à zéro
                if (h == 0 & hh == 0 & s == 0 & ss == 0 & m == 0 & mm == 0) dbg--; // remet dbg à sa valeur initiale
                Heure.Temps(h, hh, m, mm, s, ss);
                Vie.ageA(h,hh,m,mm,s,ss);
                Vie.ageB(h,hh,m,mm,s,ss);
            }

        }
    }


    class Heure
    {
        public static void Temps(int h, int hh, int m, int mm, int s, int ss)
        {
            string jour = "Il est midi";
            string nuit = "Il est minuit";
            if (h == 1 & hh == 2 & ss == 1 & s == 0 & m == 0 & mm == 0) Console.WriteLine(jour);
            if (h == 1 & hh == 2 & ss == 1 & s == 0 & m == 0 & mm == 0) System.Threading.Thread.Sleep(5000);
            if (h == 0 & hh == 0 & s == 0 & ss == 0 & m == 0 & mm == 0) Console.WriteLine(nuit);
            if (h == 0 & hh == 0 & s == 0 & ss == 0 & m == 0 & mm == 0) System.Threading.Thread.Sleep(5000);
            Console.WriteLine("Il est " + h + hh + ":" + m + mm + ":" + s + ss);
            System.Threading.Thread.Sleep(1);
            Console.Clear();
        }
    }

        class Vie
        {
            public static void ageA(int h, int hh, int m, int mm, int s, int ss)
            {
                int dva = 10;
                if (dva != 0 & hh == 1) dva -= 2;
                if (dva != 0) Console.WriteLine("il reste " + dva / 2 + " jours de survie à l'animal");
                if (dva == 0) Console.WriteLine(" L'animal est mort");

            }
            public static void ageB(int h, int hh, int m, int mm, int s, int ss)
            {
                int dvb = 30;
                if (dvb != 0 & hh == 1) dvb -= 2;
                if (dvb != 0) Console.WriteLine("il reste " + dvb / 2 + " jours de survie à l'homme");
                if (dvb == 0) Console.WriteLine(" L'homme est mort");
            }
        }
    }


Voici aussi un lien vers le programme compilé, que vous puissiez vous faire une idée visuelle du problème qui est engendré.
Merci de vos réponses, j'espères que vous pourrais me sortir de cette impasse ( je suis encore débutant, j'ai tout essayé).

2 réponses

Désolé j'ai une nouvelle fois oublier le lien :/
Ca m'arrive tout le temps.


http://www.megaupload.com/?d=TCLYXV9W
0
up !
0