Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème lors de l'affichage des couleurs

    9 septembre 2017 à 9:19:13

    Bonjour à tous,

    je me permets de vous écrire car j'essaie actuellement de faire le jeu Simon mais étant donné que j'ai remarqué que je n'ai pas encore le niveau pour le faire donc je me suis lancé un défi de moindre envergure qui consiste à faire changer la couleur d'une de mes 2 cases aléatoirement et de revenir à la couleur de base mais le problème c'est que je ne sais pas comment lui dire de revenir à la couleur de départ sachant que je ne sais pas c'est laquelle que l'ordinateur  a choisit ... Voici mon code et merci beaucoup pour votre aide:

    public partial class Form1 : Form
        {
            private const int RED = 0;
            private const int GREEN = 1;
    
            Random rand = new Random();
    
            private Color[] tabColor  =new Color[2];
            private Button[] tabButton = new Button[2];
    
            public Form1()
            {
                InitializeComponent();
                
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                tabColor[0] = Color.Red;
                tabButton[0] = btRed;
    
                tabColor[1] = Color.Green;
                tabButton[1] = btVert;
    
                Random_Color();
            }
    
            private void btVert_Click(object sender, EventArgs e)
            {
                
    
            }
    
            private void btRed_Click(object sender, EventArgs e)
            {
             
            }
    
            private void Random_Color()
            {
                int i = rand.Next(0, 2);
                tabButton[i].BackColor = Color.Black;
    
                System.Threading.Thread.Sleep(250);
    
                tabButton[i].BackColor = Color.Green;
    
            }
        }

    • Partager sur Facebook
    • Partager sur Twitter
      9 septembre 2017 à 15:22:49

      amr1080 a écrit:

      ... qui consiste à faire changer la couleur d'une de mes 2 cases aléatoirement et de revenir à la couleur de base mais le problème c'est que je ne sais pas comment lui dire de revenir à la couleur de départ sachant que je ne sais pas c'est laquelle que l'ordinateur  a choisit ...


      La réponse est toute simple: avant de faire le moindre changement, enregistre la couleur initiale de l'objet dans une variable et utilise le contenu de cette variable quand tu veux réinitialiser!

      -
      Edité par breizhbugs 9 septembre 2017 à 15:23:09

      • Partager sur Facebook
      • Partager sur Twitter
      ** La doc, c'est comme le PQ: ça sert à se démerder tout seul **
        11 septembre 2017 à 12:02:37

        > enregistre la couleur initiale de l'objet dans une variable

        Pour être plus précis, dans un champ de votre formulaire. ;)

        • Partager sur Facebook
        • Partager sur Twitter
        Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
          13 septembre 2017 à 18:58:24

          Bonjour à tous,

           Tout d'abord merci pour vos réponses 

          Ensuite, je ne comprend pas comment enregistrer ses couleurs est-ce que je les mets genre dans un tableau de couleur (en utilisant la méthode Color) c'est bien cela ?  

          genre: 

          -tabcolor[0]=color.red;

          ou bien je fais un tableau de bouton en utilisant la méthode Button 

          donc ce sera : 

          tabButton[0]=btRed;

          et dans le btRed j'aurai : 

          {

          btRed.Color=color.red; 

          }

          Etes-vous d'accord avec moi ? Lequel utilisé et qui puis est le problème éventuel ici que je pourrai rencontré c'est qu'au lieu de m'afficher la première couleur il va directement laisser en rouge et donc on ne verra pas le changement de couleur comment faire ? 

          Merci bcp

          • Partager sur Facebook
          • Partager sur Twitter
            13 septembre 2017 à 19:36:17

            Hello,

            Le Simon c'est pas 4 couleurs éteintes tout le temps visible et les couleurs s'allument ensuite successivement et c'est au joueur de répéter la séquence qui devient de plus en plus compliquée ?

            Si ce n'est pas ce que tu cherches à faire, précise, parce que dans mon esprit c'est ça.

            Pour moi tu as donc des couleurs, par exemple Red et Green, que tu vas pouvoir ajouter aléatoirement dans une liste ComputerColors à chaque fois que c'est à l'ordinateur de jouer. Quand c'est à l'humain de jouer, pour chaque bouton sur lequel il appui on compare le numéro du bouton dans la séquence avec l'index de la liste précédente, si les couleurs sont identiques, on remet le nombres de boutons pressés à zéro et l'ordinateur reprend son tour, sinon c'est perdu.

            Je pense que je le ferai comme ça, dis moi si j'ai mal compris ce que tu cherches à faire. C'est la première fois que je vois quelqu'un tenter de faire un Simon c'est plutôt une chouette idée d'exercice.

            • Partager sur Facebook
            • Partager sur Twitter
            Si un message vous a aidé, n'oubliez pas le +1 et de passer votre sujet en "Résolu" ! :)
              13 septembre 2017 à 20:14:13

              Après lecture rapide du code, n'utilisez JAMAIS un "Sleep" dans le thread d'affichage, SVP.

              Passez par des timer Winforms pour faire des actions décalées dans le temps.

              Utilisez aussi des List<Color> à la place de tableaux, c'est bien plus souple.

              Ne fixez pas les couleurs dans votre code mais dans le Designer Graphique.

              A l'arrache :

                  public partial class Form1 : Form
                  {
                      Random rand = new Random();
               
                      private List<Color> colors  = new List<Color>();
                      private List<Button> buttons = new List<Button>();
               
                      public Form1()
                      {
                          InitializeComponent();
              
                          buttons.Add(btRed);
                          colors.Add(btRed.BackColor);
              
                          buttons.Add(btVert);
                          colors.Add(btVert.BackColor);
                      }
               
                      private void Form1_Load(object sender, EventArgs e)
                      {
                          Random_Color();
                      }
               
                      private void btVert_Click(object sender, EventArgs e)
                      {
                           
               
                      }
               
                      private void btRed_Click(object sender, EventArgs e)
                      {
                        
                      }
               
                      private void Random_Color()
                      {
                          int i = rand.Next(0, 2);
                          buttons(i).BackColor = Color.Black;
               
                          Timer1.Start();
                      }
              
                      private void Timer1_Tick(JeMeRappelPlusLaSignature toto)
                      {
                          //Reset de l'IHM
                          for(int i = 0; i<buttons.Length(); i++)
                          {
                              buttons(i).BackColor = colors(i);
                          }
                      }
                  }



              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                14 septembre 2017 à 17:28:09

                bonjour à tous , 

                waouhhh merci beaucoup pour vos réponse: 

                Pyrobolser: tout à fait je fais le simon c'est comme ta dis c'est bien cela que j'essaie de faire je vais le poursuivre ce weekend je pense et je reviendrai vers vous 

                bacelar: ah bon je ne savais pas cela merci pour tes explications et ta correction je vais bien analyser cela pour assimiler au passage quand tu dis le designer graphique tu veux dire les propriété des bouton c'est cela ? IHM c'est quoi ? Ca a l'air compliqué le timer ...

                Merci encore pour votre aide ... :-) 

                • Partager sur Facebook
                • Partager sur Twitter
                  14 septembre 2017 à 18:00:38

                  >quand tu dis le designer graphique tu veux dire les propriété des bouton

                  Je parle de l'éditeur WYSIWYG de formulaire, qui oui, entre autre, permet de voir et de modifier les propriétés de toutes les composants graphiques "hébergés" dans le formulaire.

                  Vous pouvez même y gérer des composants non graphiques, comme les Timer WinForms justement, qui seront affichés dans une barre horizontale sous le formulaire.


                  >IHM c'est quoi ?

                  IHM : Interface Homme Machine, l'interface utilisateur, ou la GUI pour une application non console.

                  >Ca a l'air compliqué le timer ...

                  Ce n'est pas forcement très naturel au départ mais cela simplifie bien des choses à l'usage.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

                  Problème lors de l'affichage des couleurs

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown