Partage
  • Partager sur Facebook
  • Partager sur Twitter

Compt tour

Gérer un compt tour d'un jeu

Sujet résolu
    3 juin 2017 à 14:18:37

    Bonjour à tous, je suis débutant et j'ai un problème simple mais que je n'arrive pas à résoudre. 

    Dans un jeu je dois sélectionné un joueur temps que le compteur de tour n'est pas égale au nombre de tour à faire. 

    Au début je donne à mon compteur le nombre 1 et il incrémente à chaque fois que tout les joueurs sont passé. 

    Pour l'instant la variable est en public dans ma classe mais se que j'aimerais c'est que la première fois que la méthode est appelé elle récupére la valeur 1 et ensuite elle incrémente.

    Le problème c'est que tous se que j'essaye ne fait que remettre la variable à 1 à chaque tour et donc le jeu ne se termine jamais. 

    Quelqun aurait une idée de comment faire pour compter le nombre de fois qu'une méthode et appelé et comparer se nombre à un autre ? ( sans mettre de variables en public dans la classe )

    Merci d'avance pour votre aide et bonne journée 

    Ps: je code en c#

    -
    Edité par Loky974 3 juin 2017 à 17:02:52

    • Partager sur Facebook
    • Partager sur Twitter
      3 juin 2017 à 15:25:02

      Salut,

      Alors premièrement va falloir faire un petit effort sur l'écriture, j'ai eu du mal à comprendre ton problème.

      Envoie le code que tu as actuellement.

      • Partager sur Facebook
      • Partager sur Twitter
      MysteryDash / 100 MPM / Développeur Freelance C#.NET / osu! / PS4 Offline Remote Play
        3 juin 2017 à 16:33:49

        en gros ma question c'est " comment faire un compteur de tour ?"

        namespace jeu
        {
            public partial class Form1 : Form
            {
                public Form1()
                {
                    InitializeComponent();
                }
        
                private void commencer_Click(object sender, EventArgs e)
                {
                    int tour_en_cour = 1;
                    incrementation_tour(tour_en_cour);
                }
        
                private void tour_suivant_Click(object sender, EventArgs e)
                {
                    incrementation_tour();
                }
        
                private void incrementation_tour(int tour_en_cour)
                {
                    int nb_tour_a_faire = (int)numericUpDown1.Value;
                    if(tour_en_cour< nb_tour_a_faire)
                    {
                        tour_en_cour++;
                        label1.Text=Convert.ToString(tour_en_cour);
                        selectionne_un_joueur(tour_en_cour);
                    }
                    else
                    {
                        label1.Text = "le jeu est fini";
                    }
                }
                private void selectionne_un_joueur(int tour_en_cour)
                {
                    // selsectionne un joueur parmis la liste où son tour < tour_en_cour
                }
            }
        }



        -
        Edité par Loky974 3 juin 2017 à 16:54:19

        • Partager sur Facebook
        • Partager sur Twitter
          5 juin 2017 à 17:11:49

          Hello,

          Ta variable tour_en_cour doit être une variable appartenant à ta classe et non pas à la méthode.  
          Sinon tu perds sa valeur à chaque fois que tu sors de ta méthode.

          Fait un petit effort pour respecter les conventions de nommage du C#, ton code est inutilement compliqué à lire parce que tu passes à côté. Les méthodes commencent par une majuscule et enlève tous les underscore au milieu des noms, camelCase pour les variables et PascalCase pour les noms de méthodes feront l'affaire.

          Bonne continuation!

          • 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" ! :)
            7 juin 2017 à 16:02:19

            comme ça ? 

            public partial class Form1 : Form
                {
                    int tourEnCour = 1;
            
                    public Form1()
                    {
                        InitializeComponent();
                    }
            
                    private void commencer_Click(object sender, EventArgs e)
                    {
                        IncrementationTour();
                    }
            
                    private void tour_suivant_Click(object sender, EventArgs e)
                    {
                        IncrementationTour();
                    }
            
                    private void IncrementationTour()
                    {
                        int nbTourAFaire = (int)numericUpDown1.Value;
                        if(tourEnCour< nbTourAFaire)
                        {
                            tourEnCour++;
                            label1.Text=Convert.ToString(tourEnCour);
                            SelectionneJoueur();
                        }
                        else
                        {
                            label1.Text = "le jeu est fini";
                        }
                    }
                    private void SelectionneJoueur()
                    {
                        // selsectionne un joueur parmis la liste où son tour < tourEnCour
                    }

            c'est ce que j'avais fait au début mais on m'a dit que c'est du code "sale" et qu'il y a une autre façon de faire.

            • Partager sur Facebook
            • Partager sur Twitter
              7 juin 2017 à 17:47:34

              On est en train de parler de code où il y a des noms de contrôles et classes par défaut, des méthodes en français et qui ne respecte pas les conventions de nommage ou les bonnes pratiques du C# et qui mélange du code d'IHM avec du code métier.

              Donc oui, faire plus propre on peut, mais il ne faut pas sacrifier le fonctionnement de ton appli pour l'optimisation du code et sa propreté. Là, par exemple, le fait que tu ne te sois pas rendu compte que ce que tu faisais avant empêcherai ton appli de fonctionner correctement est pas chouette, ça veut dire qu'il y a un truc que tu n'as pas compris et du coup il vaut mieux revenir sur ça avant de passer aux optimisations.

              Sinon, comme souvent, il n'y a pas qu'une solution, un exemple, si ton appli est un jeu et que le nombre de tours est un paramètre du jeu que le joueur peut modifier à sa guise, ça serait chouette de prévoir un petit menu pour ça et d'utiliser les Settings de l'application. Ainsi tu peux mettre une valeur par défaut, les lires dans ton formulaire et le joueur peut les modifier dans un menu de configuration par exemple.

              Bonne continuation !

              • 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" ! :)
                7 juin 2017 à 18:16:48

                Si j'avais bien vue que ma veuleur se perdait des que je sort de ma méthode, c'était même mon problème ^^

                Pour le reste j'ai rien compris donc ça me fait beaucoup de pistes à explorer merci beaucoup pour ton aide je vais lire tout ça. 

                Encore merci et bonne continuation à tous ! 

                • Partager sur Facebook
                • Partager sur Twitter

                Compt tour

                × 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