j'ai essayé de code ça pour modifier le timerinfoBoutique.Milli_seconde = 1000;
Lorsque je fais un débogage la valeur de Milli_seconde est bien modifier , mais pas la vitesse du jeu, la date change toujours toutes les 20 secondes en temps réelle.
public int Milli_seconde { get; set; }n'a pas de corps, ça veut dire qu'elle stocke la valeur, mais n'en fait rien, et notamment, elle ne change pas l'intervalle du timer.
infoBoutique.Milli_seconde = 1000; infoBoutique. SetTimer();
public int Milli_seconde { get { return ATimer.Interval; } set { ATimer.Interval = value; } }
infoBoutique.Milli_seconde = 1000;
infoBoutique.ATimer.Interval = 1000;
Heure_Jeu += 1; if (Heure_Jeu == 24) { Heure_Jeu = 0; Jour_Jeu += 1; } if (Jour_Jeu == 8) { Jour_Jeu = 1; Semaine_Jeu += 1;connais tu le type TimeSpan? Jette un oeil, ça fait ça plus ou moins tout seul
enum Ecoulement { Normal = 20000, Rapide = 10000, TresRapide = 5000, Extreme = 1000 }
class TempsManu : INotifyPropertyChanged { private Timer timer = new Timer(); private TimeSpan compteur = new TimeSpan(); private TimeSpan uneHeure = TimeSpan.FromHours(1); #region Constructeurs /// <summary> /// Constructeur par défaut /// </summary> public TempsManu() { timer.Interval = (int)ecoulementNuit; timer.Tick += Timer_Tick; } /// <summary> /// Constrcuteur avec définition du jour et de la nuit /// </summary> /// <param name="LAube"></param> /// <param name="LeCrepuscule"></param> public TempsManu(uint LAube, uint LeCrepuscule):this() { if (LeCrepuscule > 24 || LAube >= LeCrepuscule) throw new Exception("Définition du jour et de la nuit impossible"); Aube = LAube; Crepuscule = LeCrepuscule; GestionDuTemps(); } #endregion #region Proprietes private Ecoulement ecoulementNuit = Ecoulement.Rapide; /// <summary> /// Ecoulement du temps la nuit /// </summary> public Ecoulement EcoulementNuit { get { return ecoulementNuit; } set { if (ecoulementNuit != value) { ecoulementNuit = value; GenerePropertyChanged("EcoulementNuit"); if (nuit) timer.Interval = (int)value; } } } private Ecoulement ecoulementJour = Ecoulement.Normal; /// <summary> /// Ecoulement du temps le jour /// </summary> public Ecoulement EcoulementJour { get { return ecoulementJour; } set { if (ecoulementJour != value) { ecoulementJour = value; GenerePropertyChanged("EcoulementJour"); if (!nuit) timer.Interval = (int)value; } } } private int semaine = 0; /// <summary> /// Retourne la semaine en cours /// </summary> public int Semaine { get { return semaine; } private set { if (semaine != value) { semaine = value; GenerePropertyChanged("Semaine"); } } } private int jour = 0; /// <summary> /// Retourne le jour en cours /// </summary> public int Jour { get { return jour; } private set { if (jour != value) { jour = value; GenerePropertyChanged("Jour"); } } } private int heure = 0; /// <summary> /// Retourne l'heure en cours /// </summary> public int Heure { get { return heure; } private set { if (heure != value) { heure = value; GenerePropertyChanged("Heure"); } } } private bool nuit = true; /// <summary> /// Retourne si on est la nuit ou le jour /// </summary> public bool Nuit { get { return nuit; } private set { if (nuit != value) { nuit = value; GenerePropertyChanged("Nuit"); } } } private uint aube = 6; /// <summary> /// Retourne l'heure du lever de soleil /// </summary> public uint Aube { get { return aube; } private set { if (aube != value) { aube = value; GenerePropertyChanged("Aube"); } } } private uint crepuscule = 20; /// <summary> /// Retourne l'heure de coucher du soleil /// </summary> public uint Crepuscule { get { return crepuscule; } private set { if (crepuscule != value) { crepuscule = value; GenerePropertyChanged("Crepuscule"); } } } #endregion #region Méthodes /// <summary> /// Décompte le temps qui passe /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Timer_Tick(object sender, EventArgs e) { compteur += uneHeure; GestionDuTemps(); } /// <summary> /// Calcule le temps et met à jour les propriétés /// </summary> private void GestionDuTemps() { if (compteur.Days == 8)//on change de semaine { Semaine++; //j'utilise la propriété pour déclencher l'évènement PropretyChanged compteur = new TimeSpan(); } Jour = compteur.Days; //j'utilise la propriété pour déclencher l'évènement PropretyChanged Heure = compteur.Hours; //j'utilise la propriété pour déclencher l'évènement PropretyChanged //Gestion automatique du jour et de la nuit if (Heure == aube) { Nuit = false; //j'utilise la propriété pour déclencher l'évènement PropretyChanged timer.Interval = (int)ecoulementJour; } else if (Heure == crepuscule) { Nuit = true; //j'utilise la propriété pour déclencher l'évènement PropretyChanged timer.Interval = (int)ecoulementNuit; } //Signalement que le temps vient de changer (ou de démarer) Tick?.Invoke(this, semaine, jour, heure); } /// <summary> /// Démarre le temps du jeux avec un offset en heure optionnel /// </summary> /// <param name="HeureDeDepart"</param> public void Start(uint HeureDeDepart = 0) { if (HeureDeDepart != 0) { Semaine = (int)HeureDeDepart / 168; compteur = TimeSpan.FromHours(HeureDeDepart % 168); Nuit = compteur.Hours < aube || compteur.Hours >= crepuscule; timer.Interval = nuit ? (int)ecoulementNuit : (int)ecoulementJour; } GestionDuTemps(); timer.Start(); } #endregion #region Evènements public delegate void TickEvent(TempsManu Sender, int LaSemaine, int LeJour, int Lheure); /// <summary> /// Se déclence à chaque "coup d'horloge" /// </summary> public event TickEvent Tick; #endregion #region INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged; /// <summary> /// Signale à l'IHM un changement de valeur d'une propriété /// </summary> /// <param name="Propriete"></param> private void GenerePropertyChanged(string Propriete) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(Propriete)); } #endregion }
class TempsManu : INotifyPropertyChanged { private Timer timer = new Timer(); private TimeSpan compteur = new TimeSpan(); private TimeSpan uneHeure = TimeSpan.FromHours(1); #region Constructeurs /// <summary> /// Constructeur par défaut /// </summary> public TempsManu() { timer.Interval = (int)ecoulementNuit; timer.Tick += Timer_Tick; } /// <summary> /// Constrcuteur avec définition du jour et de la nuit /// </summary> /// <param name="LAube"></param> /// <param name="LeCrepuscule"></param> public TempsManu(uint LAube, uint LeCrepuscule):this() { if (LeCrepuscule > 24 || LAube >= LeCrepuscule) throw new Exception("Définition du jour et de la nuit impossible"); Aube = LAube; Crepuscule = LeCrepuscule; GestionDuTemps(); } #endregion #region Proprietes private Ecoulement ecoulementNuit = Ecoulement.Rapide; /// <summary> /// Ecoulement du temps la nuit /// </summary> public Ecoulement EcoulementNuit { get { return ecoulementNuit; } set { if (ecoulementNuit != value) { ecoulementNuit = value; GenerePropertyChanged("EcoulementNuit"); if (nuit) timer.Interval = (int)value; } } } private Ecoulement ecoulementJour = Ecoulement.Normal; /// <summary> /// Ecoulement du temps le jour /// </summary> public Ecoulement EcoulementJour { get { return ecoulementJour; } set { if (ecoulementJour != value) { ecoulementJour = value; GenerePropertyChanged("EcoulementJour"); if (!nuit) timer.Interval = (int)value; } } } private int semaine = 0; /// <summary> /// Retourne la semaine en cours /// </summary> public int Semaine { get { return semaine; } private set { if (semaine != value) { semaine = value; GenerePropertyChanged("Semaine"); } } } private int jour = 0; /// <summary> /// Retourne le jour en cours /// </summary> public int Jour { get { return jour; } private set { if (jour != value) { jour = value; GenerePropertyChanged("Jour"); } } } private int heure = 0; /// <summary> /// Retourne l'heure en cours /// </summary> public int Heure { get { return heure; } private set { if (heure != value) { heure = value; GenerePropertyChanged("Heure"); } } } private bool nuit = true; /// <summary> /// Retourne si on est la nuit ou le jour /// </summary> public bool Nuit { get { return nuit; } private set { if (nuit != value) { nuit = value; GenerePropertyChanged("Nuit"); } } } private uint aube = 6; /// <summary> /// Retourne l'heure du lever de soleil /// </summary> public uint Aube { get { return aube; } private set { if (aube != value) { aube = value; GenerePropertyChanged("Aube"); } } } private uint crepuscule = 20; /// <summary> /// Retourne l'heure de coucher du soleil /// </summary> public uint Crepuscule { get { return crepuscule; } private set { if (crepuscule != value) { crepuscule = value; GenerePropertyChanged("Crepuscule"); } } } #endregion #region Méthodes /// <summary> /// Décompte le temps qui passe /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Timer_Tick(object sender, EventArgs e) { compteur += uneHeure; GestionDuTemps(); } /// <summary> /// Calcule le temps et met à jour les propriétés /// </summary> private void GestionDuTemps() { if (compteur.Days == 8)//on change de semaine { Semaine++; //j'utilise la propriété pour déclencher l'évènement PropretyChanged compteur = new TimeSpan(); } Jour = compteur.Days; //j'utilise la propriété pour déclencher l'évènement PropretyChanged Heure = compteur.Hours; //j'utilise la propriété pour déclencher l'évènement PropretyChanged //Gestion automatique du jour et de la nuit if (Heure == aube) { Nuit = false; //j'utilise la propriété pour déclencher l'évènement PropretyChanged timer.Interval = (int)ecoulementJour; } else if (Heure == crepuscule) { Nuit = true; //j'utilise la propriété pour déclencher l'évènement PropretyChanged timer.Interval = (int)ecoulementNuit; } //Signalement que le temps vient de changer (ou de démarer) Tick?.Invoke(this, semaine, jour, heure); } /// <summary> /// Démarre le temps du jeux avec un offset en heure optionnel /// </summary> /// <param name="HeureDeDepart"</param> public void Start(uint HeureDeDepart = 0) { if (HeureDeDepart != 0) { Semaine = (int)HeureDeDepart / 168; compteur = TimeSpan.FromHours(HeureDeDepart % 168); Nuit = compteur.Hours < aube || compteur.Hours >= crepuscule; timer.Interval = nuit ? (int)ecoulementNuit : (int)ecoulementJour; } GestionDuTemps(); timer.Start(); } #endregion #region Evènements public delegate void TickEvent(TempsManu Sender, int LaSemaine, int LeJour, int Lheure); /// <summary> /// Se déclenche à chaque "coup d'horloge" /// </summary> public event TickEvent Tick; #endregion #region INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged; /// <summary> /// Signale à l'IHM un changement de valeur d'une propriété /// </summary> /// <param name="Propriete"></param> private void GenerePropertyChanged(string Propriete) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(Propriete)); } #endregion }
public int Milli_seconde { get; set; } public Timer ATimer { get; set; } public void SetTimer() { // Créez une minuterie avec un intervalle de 20 secondes réelle = 1 heure dans l'appli. ATimer = new Timer(Milli_seconde); // Milli_seconde = 20 000 // Connectez l'événement OnTimedEvent pour la minuterie. ATimer.Elapsed += OnTimedEvent; // Sur événement chronométré ATimer.AutoReset = true; ATimer.Enabled = true; ATimer.Start(); } private void OnTimedEvent(object source, ElapsedEventArgs e) { Heure_Jeu += 1; if (Heure_Jeu == 24) { Heure_Jeu = 0; Jour_Jeu += 1; } if (Jour_Jeu == 8) { Jour_Jeu = 1; Semaine_Jeu += 1; }}
#region Modification_Bandeau_Date public void SetTimer() { // Créez une minuterie avec un intervalle de deux secondes = 20000. aTimer = new Timer(infoBoutique.Milli_seconde); // Connectez l'événement. aTimer.Elapsed += ModifBandeauDate; aTimer.AutoReset = true; aTimer.Enabled = true; } private void ModifBandeauDate(object source, ElapsedEventArgs e) { Device.BeginInvokeOnMainThread(() => NumSemaine.Text = infoBoutique.Semaine_Jeu.ToString()); Device.BeginInvokeOnMainThread(() => HeureJour.Text = infoBoutique.Heure_Jeu.ToString() + "h"); Device.BeginInvokeOnMainThread(() => JoursSemaine.Text = infoBoutique.ConvertirNumJour_LettreJour(infoBoutique.Jour_Jeu)); } #endregion
infoBoutique.Milli_seconde = 1000;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionprivate void timer1_Tick(object sender, EventArgs e) { label1.Text ="Semaine: " + tempsManu.Semaine.ToString()+ " - Jour: "+ tempsManu.Jour.ToString() + " - heure: "+ tempsManu.Heure.ToString()+ "h"; label2.Text = tempsManu.Nuit.ToString(); }
private void Form3_Load(object sender, EventArgs e) { //tempsManu = new TempsManu(); //ou alors tempsManu = new TempsManu(5, 21);//pour définir le jour et la nuit tempsManu.Tick += TempsManu_Tick;//on abonne le programme à la base de temps tempsManuBindingSource.DataSource = tempsManu;//on lie le binding winform tempsManu.EcoulementJour = Ecoulement.TresRapide; tempsManu.EcoulementNuit = Ecoulement.Extreme; //tempsManu.Start(); //ou alors tempsManu.Start(300);//pour démarrer au cours de la 2eme semaine }
/// <summary> /// Le programme agit en fonction du temps, car il est abonné à l'évènement Tick /// </summary> /// <param name="Sender"></param> /// <param name="LaSemaine"></param> /// <param name="LeJour"></param> /// <param name="Lheure"></param> private void TempsManu_Tick(TempsManu Sender, int LaSemaine, int LeJour, int Lheure) { lblTemps.Text = $"Nous sommes le jour {LeJour} de la semaine {LaSemaine}, il est {Lheure} heures et il fait {(Sender.Nuit ? "nuit" : "jour")}"; }
class TempsManu : INotifyPropertyChanged { private Timer timer = new Timer(); private TimeSpan compteur = new TimeSpan(); private TimeSpan uneHeure = TimeSpan.FromHours(1); private string[] nomsJours = { "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche" }; #region Constructeurs /// <summary> /// Constructeur par défaut /// </summary> public TempsManu() { timer.Interval = (int)ecoulementNuit; timer.Tick += Timer_Tick; } /// <summary> /// Constrcuteur avec définition du jour et de la nuit /// </summary> /// <param name="LAube"></param> /// <param name="LeCrepuscule"></param> public TempsManu(uint LAube, uint LeCrepuscule):this() { if (LeCrepuscule > 24 || LAube >= LeCrepuscule) throw new Exception("Définition du jour et de la nuit impossible"); Aube = LAube; Crepuscule = LeCrepuscule; GestionDuTemps(); } #endregion #region Proprietes private Ecoulement ecoulementNuit = Ecoulement.Rapide; /// <summary> /// Ecoulement du temps la nuit /// </summary> public Ecoulement EcoulementNuit { get { return ecoulementNuit; } set { if (ecoulementNuit != value) { ecoulementNuit = value; GenerePropertyChanged("EcoulementNuit"); if (nuit) timer.Interval = (int)value; } } } private Ecoulement ecoulementJour = Ecoulement.Normal; /// <summary> /// Ecoulement du temps le jour /// </summary> public Ecoulement EcoulementJour { get { return ecoulementJour; } set { if (ecoulementJour != value) { ecoulementJour = value; GenerePropertyChanged("EcoulementJour"); if (!nuit) timer.Interval = (int)value; } } } private int semaine = 1; /// <summary> /// Retourne la semaine en cours /// </summary> public int Semaine { get { return semaine; } private set { if (semaine != value) { semaine = value; GenerePropertyChanged("Semaine"); } } } private int jour = 0; /// <summary> /// Retourne le jour en cours /// </summary> public int Jour { get { return jour; } private set { if (jour != value) { jour = value; GenerePropertyChanged("Jour"); GenerePropertyChanged("NomJour");//Si on signale que le jour a changé, il faut signaler que son nom aussi } } } /// <summary> /// Nom du jour en cours /// </summary> public string NomJour { get { return nomsJours[jour]; } } private int heure = 0; /// <summary> /// Retourne l'heure en cours /// </summary> public int Heure { get { return heure; } private set { if (heure != value) { heure = value; GenerePropertyChanged("Heure"); } } } private bool nuit = true; /// <summary> /// Retourne si on est la nuit ou le jour /// </summary> public bool Nuit { get { return nuit; } private set { if (nuit != value) { nuit = value; GenerePropertyChanged("Nuit"); } } } private uint aube = 6; /// <summary> /// Retourne l'heure du lever de soleil /// </summary> public uint Aube { get { return aube; } private set { if (aube != value) { aube = value; GenerePropertyChanged("Aube"); } } } private uint crepuscule = 20; /// <summary> /// Retourne l'heure de coucher du soleil /// </summary> public uint Crepuscule { get { return crepuscule; } private set { if (crepuscule != value) { crepuscule = value; GenerePropertyChanged("Crepuscule"); } } } #endregion #region Méthodes /// <summary> /// Décompte le temps qui passe /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Timer_Tick(object sender, EventArgs e) { compteur += uneHeure; GestionDuTemps(); } /// <summary> /// Calcule le temps et met à jour les propriétés /// </summary> private void GestionDuTemps() { if (compteur.Days == 8)//on change de semaine { Semaine++; //j'utilise la propriété pour déclencher l'évènement PropretyChanged compteur = new TimeSpan(); } Jour = compteur.Days; //j'utilise la propriété pour déclencher l'évènement PropretyChanged Heure = compteur.Hours; //j'utilise la propriété pour déclencher l'évènement PropretyChanged //Gestion automatique du jour et de la nuit if (Heure == aube) { Nuit = false; //j'utilise la propriété pour déclencher l'évènement PropretyChanged timer.Interval = (int)ecoulementJour; } else if (Heure == crepuscule) { Nuit = true; //j'utilise la propriété pour déclencher l'évènement PropretyChanged timer.Interval = (int)ecoulementNuit; } //Signalement que le temps vient de changer (ou de démarrer) Tick?.Invoke(this, semaine, jour, heure); } /// <summary> /// Démarre le temps du jeux avec un offset en heure optionnel /// </summary> /// <param name="HeureDeDepart"</param> public void Start(uint HeureDeDepart = 0) { if (HeureDeDepart != 0) { Semaine = (int)HeureDeDepart / 168 + 1; compteur = TimeSpan.FromHours(HeureDeDepart % 168); Nuit = compteur.Hours < aube || compteur.Hours >= crepuscule; timer.Interval = nuit ? (int)ecoulementNuit : (int)ecoulementJour; } GestionDuTemps(); timer.Start(); } #endregion #region Evènements public delegate void TickEvent(TempsManu Sender, int LaSemaine, int LeJour, int Lheure); /// <summary> /// Se déclenche à chaque "coup d'horloge" /// </summary> public event TickEvent Tick; #endregion #region INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged; /// <summary> /// Signale à l'IHM un changement de valeur d'une propriété /// </summary> /// <param name="Propriete"></param> private void GenerePropertyChanged(string Propriete) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(Propriete)); } #endregion }
private void TempsManu_Tick(TempsManu Sender, int LaSemaine, int LeJour, int Lheure) { lblTemps.Text = $"Nous sommes le {Sender.NomJour} de la semaine {LaSemaine}, il est {Lheure} heures et il fait {(Sender.Nuit ? "nuit" : "jour")}"; }