Problème lors de répétition dans un winform

Signaler
-
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015
-
Bonjour, j'ai un petit soucis.
Je voulu faire le jeu du nombre mystère en winform et j'ai deux trois problème dans la rédaction de mon code.

1) Une fois que l'utilisateur rentre un chiffre et que la MessageBox s'affiche pour dire si c'est plus ou moins, l'ordinateur réinitialise le chiffre mystère. (donc a moins de le trouvé en un coup c'est impossible)

2) par hasard j'ai trouvé du premier coups le bon chiffre et à mon grand étonnement, l'application quitte alors que normalement je voulais qu'elle affiche une MessageBox qui propose de recommencer ou non.

Voici le code en question:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace le_Nombre_Mystère
{
    public partial class interfaceDuJeu : Form
    {
        public interfaceDuJeu()
        {
            InitializeComponent();
        }

        private void m_buttonExit2_Click(object sender, EventArgs e)
        {
            DialogResult resultat = MessageBox.Show("Voulez-vous quitter ?", "Quitter ?", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (resultat == DialogResult.Yes) { Application.Exit(); }
            else { }
        }

        private void m_buttonOk_Click(object sender, EventArgs e)
        {
            bool over = false;
            Random rand = new Random();
            int m_secretNumber = rand.Next(101);
            String inputString = textBox1.Text;
            int inputNumbers;

            if (int.TryParse(inputString, out inputNumbers))
            {
                
                    if (inputNumbers == m_secretNumber)
                    {
                        MessageBox.Show("Félicitation, vous avez trouvé le nombre mystère !", "Vous avez gagné !!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        over = true;
                    }

                    else if (inputNumbers < m_secretNumber)
                    {
                        MessageBox.Show("C'est plus !");
                    }

                    else
                    {
                        MessageBox.Show("C'est moins !");
                    }
                
            }
            else
            {
                MessageBox.Show("Vous devez entrer un nombre entre 1 et 100 (inclu)", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

                if (over == true)
                {

                    DialogResult resultat = MessageBox.Show("Voulez-vous recommencer ?", "Encore ?", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (resultat == DialogResult.No) { Application.Exit(); } else { this.Hide(); new interfaceDuJeu().Show(); }
                }

            }
        }
    }
}


Voilas, ci quelqu'un peut m'aider j'en serais ravi.

2 réponses

Messages postés
792
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
12 juillet 2019
8
Bonjour
En premier lieu, il faut sortir la génération du nombre à trouver de la fonction m_buttonOK_click.
Ce nombre à trouver doit être déclaré en private.
Tu peux créer une fonction qui va générer ce nombre.
Tu appeleras ta fonction un première fois après initializecomponent, puis à chaque fois qu'il aura été trouvé pour en calculer un autre.
Bon codage.

louis
Messages postés
189
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
27 novembre 2015

Bonjour,
1° Si l'application quitte, passe en mode debug. J'ai testé ton code chez moi et l'écran reste affiché


2° D'accord avec Louis14.
A chaque clique sur le bouton OK, le nombre mystère change !!! Pour trouver, il faut une sacrée veine !


3° Bizarre le "if (over==true)" dans le "else"
Ne devrais tu pas mettre le test en dehors du "else"


4° Application.Exit : par expérience je n'utilise pas cette méthode pour quitter mais plutôt this.Close()


5° si rien dans le "else" alors ne le mets pas


6° "this.hide" et "new interfaceDuJeu..." : alors là faut revoir certaines notions. :o)

DT