Example #1
0
 /// <summary>
 /// Constructeur
 /// </summary>
 /// <param name="aPictureBox">Dessin de la voiture</param>
 public Voiture(PictureBox aPictureBox, FeuTricolore aFeuTricolore)
 {
     // Ici on créé une dépendance entre le feu tricolore et la voiture
     pbxVoiture   = aPictureBox;
     initialPoint = pbxVoiture.Location;
     feuTricolore = aFeuTricolore;
 }
Example #2
0
 /// <summary>
 /// Au chargement du formulaire
 /// </summary>
 private void Form1_Load(object sender, EventArgs e)
 {
     // Affiche le feu tricolore
     feuTricolore = new FeuTricolore(pbxFeuTricolore.CreateGraphics());
     // Créé la voiture
     voiture = new Voiture(pbxVoiture, feuTricolore);
 }
Example #3
0
        /// <summary>
        /// Au chargement du formulaire
        /// </summary>
        private void frmMain_Load(object sender, EventArgs e)
        {
            // Pour que la voiture soit transparente
            pbxVoiture.Parent    = pbxCircuit;
            pbxVoiture.Location  = new Point(pbxVoiture.Location.X - pbxVoiture.Parent.Location.X, pbxVoiture.Location.Y - pbxVoiture.Parent.Location.Y);
            pbxVoiture.BackColor = Color.Transparent;
            // Affiche le feu tricolore
            feuTricolore = new FeuTricolore(pbxFeuTricolore.CreateGraphics());
            // Créé la voiture
            voiture = new Voiture(pbxVoiture);

            // TODO 4 : Résumé :
            //          Bravo vous venez à l'étape 2 de créer votre propre événement
            //          Maintenant il vous faut l'utiliser (abonner)
            // TODO 4a : S'abonner à l'évenement changement de couleur du feu
            // TODO 4b : Lorsque l'événement se déclenche il faut réaliser les actions suivantes :
            //           Si la nouvelle couleur est verte, démarrer la voiture
            //           sinon l'arreter.

            // TODO 5 : Bravo vous avez terminé l'exercice. En bonus, vous pouvez regarder la solution "DemoSansEventPolling"
            //          qui montre une implémentation avec une technique appelée le "polling". Ce type d'implémentation a
            //          l'inconvénient de boucler sans arret en demandant à intervalle régulier l'état du feu tricolore.
            //          Cela surcharge le feu tricolore d'appels qui dans certains scenarios peuvent être problématique.
            //          De plus cela créé un couplage entre la voiture et le feu tricolore, ce qui rend les classes dépedantes
        }
Example #4
0
 /// <summary>
 /// Implémentation de l'événement pour s'abonner au changement de couleur du feu
 /// Quand le feu est vert, la voiture démarre.
 /// Pour toutes les autres couleurs, la voiture s'arrete.
 /// </summary>
 /// <param name="sender">Le feu tricolore qui déclenche l'événement</param>
 /// <param name="newColor">La nouvelle couleur du feu</param>
 /// <param name="oldColor">La couleur précédente du feu</param>
 private void FeuTricolore_ColorChanged(FeuTricolore sender, FeuTricolore.FeuTricoloreEnum newColor, FeuTricolore.FeuTricoloreEnum oldColor)
 {
     if (newColor == FeuTricolore.FeuTricoloreEnum.Vert)
     {
         voiture.Start();
     }
     else
     {
         voiture.Stop();
     }
 }
Example #5
0
 /// <summary>
 /// Au chargement du formulaire
 /// </summary>
 private void frmMain_Load(object sender, EventArgs e)
 {
     // Pour que la voiture soit transparente
     pbxVoiture.Parent    = pbxCircuit;
     pbxVoiture.Location  = new Point(pbxVoiture.Location.X - pbxVoiture.Parent.Location.X, pbxVoiture.Location.Y - pbxVoiture.Parent.Location.Y);
     pbxVoiture.BackColor = Color.Transparent;
     // Affiche le feu tricolore
     feuTricolore = new FeuTricolore(pbxFeuTricolore.CreateGraphics());
     // Créé la voiture
     voiture = new Voiture(pbxVoiture);
     // S'abonne à l'évenement changement de couleur du feu
     feuTricolore.ColorChanged += FeuTricolore_ColorChanged;
 }