Partage via


Tutoriel : Ajouter des problèmes mathématiques à une application WinForms de questionnaire mathématique

Dans cette série de quatre didacticiels, vous allez créer un questionnaire mathématique. Le quiz contient quatre problèmes de mathématiques aléatoires auxquels le participant tente de répondre dans un délai spécifié.

Les contrôles utilisent du code C# ou Visual Basic. Dans ce deuxième tutoriel, vous rendez le questionnaire difficile en ajoutant du code pour les problèmes mathématiques basés sur des nombres aléatoires. Vous créez également une méthode nommée StartTheQuiz() pour résoudre les problèmes.

Dans ce deuxième tutoriel, vous allez apprendre à :

  • Écrivez du code pour créer des objets aléatoires à utiliser dans des problèmes mathématiques.
  • Ajoutez un gestionnaire d’événements pour le bouton Démarrer.
  • Écrivez du code pour démarrer le questionnaire.

Conditions préalables

Ce didacticiel s’appuie sur un didacticiel précédent, Créer un questionnaire mathématique winForms. Si vous n'avez pas terminé ce didacticiel, complétez-le d'abord.

Créer un problème d’ajout aléatoire

  1. Dans votre projet Visual Studio, sélectionnez Concepteur Windows Forms.

  2. Sélectionnez le formulaire, Form1.

  3. Dans la barre de menus, sélectionnez Afficher>Code. Form1.cs ou Form1.vb apparaît, selon le langage de programmation que vous utilisez, afin de pouvoir afficher le code derrière le formulaire.

  4. Créez un objet Random en ajoutant une instruction new en haut du code dans Form1.cs ou Form1.vb.

    public partial class Form1 : Form
    {
        // Create a Random object called randomizer 
        // to generate random numbers.
        Random randomizer = new Random();
    

Vous pouvez utiliser des instructions new comme celle-ci pour créer des boutons, étiquettes, panneaux, OpenFileDialogs, ColorDialogs, SoundPlayers, Randoms et même des formulaires. Ces éléments sont appelés objets.

Lorsque vous exécutez votre programme, le formulaire est démarré. Le code qui le sous-tend crée un objet Random et le nomme randomizer.

Votre questionnaire a besoin de variables pour stocker les nombres aléatoires qu’il crée pour chaque problème. Avant d’utiliser des variables, vous les déclarez, ce qui signifie répertorier leurs noms et leurs types de données.

  1. Ajoutez deux variables entières au formulaire et nommez-les addend1 et addend2 dans Form1.cs ou Form1.vb.

    Remarque

    Une variable entière est appelée int en C# ou un entier en Visual Basic. Ce type de variable stocke un nombre positif ou négatif de -2147483648 par 2147483647 et ne peut stocker que des nombres entiers, et non des décimales.

    Vous utilisez une syntaxe similaire pour ajouter une variable entière comme vous l’avez fait pour ajouter l’objet Random, comme le montre le code suivant.

    // Create a Random object called randomizer 
    // to generate random numbers.
    Random randomizer = new Random();
    
    // These integer variables store the numbers 
    // for the addition problem. 
    int addend1;
    int addend2;
    

  1. Ajoutez une méthode nommée StartTheQuiz()Form1.cs ou Form1.vb. Cette méthode utilise la méthode Next() de l’objet random pour générer des nombres aléatoires pour les étiquettes. StartTheQuiz() remplit par la suite tous les problèmes et démarre le minuteur. Vous devez donc ajouter ces informations au commentaire récapitulatif. La fonction doit ressembler au code suivant.

    /// <summary>
    /// Start the quiz by filling in all of the problems
    /// and starting the timer.
    /// </summary>
    public void StartTheQuiz()
    {
        // Fill in the addition problem.
        // Generate two random numbers to add.
        // Store the values in the variables 'addend1' and 'addend2'.
        addend1 = randomizer.Next(51);
        addend2 = randomizer.Next(51);
    
        // Convert the two randomly generated numbers
        // into strings so that they can be displayed
        // in the label controls.
        plusLeftLabel.Text = addend1.ToString();
        plusRightLabel.Text = addend2.ToString();
    
        // 'sum' is the name of the NumericUpDown control.
        // This step makes sure its value is zero before
        // adding any values to it.
        sum.Value = 0;
    }
    

Lorsque vous utilisez la méthode Next() avec un objet random, par exemple lorsque vous appelez randomizer.Next(51), vous obtenez un nombre aléatoire inférieur à 51 ou compris entre 0 et 50. Ce code appelle randomizer.Next(51) afin que les deux nombres aléatoires s’ajoutent à une réponse comprise entre 0 et 100.

Regardez de plus près ces déclarations.

plusLeftLabel.Text = addend1.ToString();
plusRightLabel.Text = addend2.ToString();

Ces instructions définissent les propriétés Text de plusLeftLabel et plusRightLabel afin qu’elles affichent les deux nombres aléatoires. Les contrôles d’étiquette affichent des valeurs au format texte et, en programmation, les chaînes contiennent du texte. La méthode ToString() de chaque entier convertit l’entier en texte qu’une étiquette peut afficher.

Créer des problèmes de soustraction, de multiplication et de division aléatoires

L’étape suivante consiste à déclarer des variables et à fournir des valeurs aléatoires pour les autres problèmes mathématiques.

  1. Ajoutez des variables entières pour les problèmes mathématiques restants à votre formulaire, après les variables de problème d’ajout. Le code dans Form1.cs ou Form1.vb doit ressembler à l’exemple suivant.

    public partial class Form1 : Form
    {
        // Create a Random object called randomizer 
        // to generate random numbers.
        Random randomizer = new Random();
    
        // These integer variables store the numbers 
        // for the addition problem. 
        int addend1;
        int addend2;
    
        // These integer variables store the numbers 
        // for the subtraction problem. 
        int minuend;
        int subtrahend;
    
        // These integer variables store the numbers 
        // for the multiplication problem. 
        int multiplicand;
        int multiplier;
    
        // These integer variables store the numbers 
        // for the division problem. 
        int dividend;
        int divisor;
    

  1. Modifiez la méthode StartTheQuiz() dans Form1.cs ou Form1.vb en ajoutant le code suivant, en commençant par le commentaire « Remplir le problème de soustraction ».

    /// <summary>
    /// Start the quiz by filling in all of the problem 
    /// values and starting the timer. 
    /// </summary>
    public void StartTheQuiz()
    {
        // Fill in the addition problem.
        // Generate two random numbers to add.
        // Store the values in the variables 'addend1' and 'addend2'.
        addend1 = randomizer.Next(51);
        addend2 = randomizer.Next(51);
    
        // Convert the two randomly generated numbers
        // into strings so that they can be displayed
        // in the label controls.
        plusLeftLabel.Text = addend1.ToString();
        plusRightLabel.Text = addend2.ToString();
    
        // 'sum' is the name of the NumericUpDown control.
        // This step makes sure its value is zero before
        // adding any values to it.
        sum.Value = 0;
    
        // Fill in the subtraction problem.
        minuend = randomizer.Next(1, 101);
        subtrahend = randomizer.Next(1, minuend);
        minusLeftLabel.Text = minuend.ToString();
        minusRightLabel.Text = subtrahend.ToString();
        difference.Value = 0;
    
        // Fill in the multiplication problem.
        multiplicand = randomizer.Next(2, 11);
        multiplier = randomizer.Next(2, 11);
        timesLeftLabel.Text = multiplicand.ToString();
        timesRightLabel.Text = multiplier.ToString();
        product.Value = 0;
    
        // Fill in the division problem.
        divisor = randomizer.Next(2, 11);
        int temporaryQuotient = randomizer.Next(2, 11);
        dividend = divisor * temporaryQuotient;
        dividedLeftLabel.Text = dividend.ToString();
        dividedRightLabel.Text = divisor.ToString();
        quotient.Value = 0;
    

Ce code utilise la méthode Next() de la classe Random un peu différemment de la façon dont le problème d’ajout se produit. Lorsque vous attribuez à la méthode Next() deux valeurs, il sélectionne un nombre aléatoire supérieur ou égal à la première valeur et inférieur à la seconde.

En utilisant la méthode Next() avec deux arguments, vous pouvez vous assurer que le problème de soustraction a une réponse positive, la réponse de multiplication est au plus 100 et la réponse de division n’est pas une fraction.

Ajouter un gestionnaire d’événements au bouton Démarrer

Dans cette section, vous ajoutez du code pour démarrer le questionnaire lorsque le bouton démarrer est sélectionné. Le code qui s’exécute en réaction à un événement comme une sélection de boutons est appelé gestionnaire d’événements.

  1. Dans le Concepteur Windows Forms, double-cliquez sur le bouton Démarrer le questionnaire, ou sélectionnez-le et appuyez sur Entrée. Le code du formulaire s’affiche et une nouvelle méthode est visible.

    Ces actions ajoutent un gestionnaire d’événements Click au bouton démarrer. Lorsqu'un participant au quiz sélectionne ce bouton, l'application exécute le code que vous ajouterez à cette nouvelle méthode.

  2. Ajoutez les deux instructions suivantes pour que le gestionnaire d’événements démarre le questionnaire.

    private void startButton_Click(object sender, EventArgs e)
    {
        StartTheQuiz();
        startButton.Enabled = false;           
    }
    

La première instruction appelle la nouvelle méthode StartTheQuiz(). La deuxième instruction définit la propriété Enabled du contrôle startButton sur false afin que le participant au quiz ne puisse pas sélectionner le bouton pendant un questionnaire.

Exécuter votre application

  1. Enregistrez votre code.

  2. Exécutez votre application, puis sélectionnez Démarrer le questionnaire. Des problèmes mathématiques aléatoires apparaissent, comme le montre la capture d’écran suivante.

    Capture d’écran montrant des valeurs aléatoires dans les quatre problèmes mathématiques. Le bouton Démarrer le questionnaire s’affiche grisé.

Étapes suivantes

Passez au tutoriel suivant pour ajouter un minuteur à votre questionnaire mathématique et vérifiez les réponses des utilisateurs.