Tutorial: Hinzufügen mathematischer Aufgaben zu einer WinForms-App für ein Mathequiz

In dieser Reihe von vier Tutorials erstellen Sie ein Mathequiz. Das Quiz enthält vier zufällige mathematische Probleme, die Quizteilnehmer*innen innerhalb einer angegebenen Zeit zu beantworten versuchen.

Steuerelemente verwenden C#- oder Visual Basic-Code. In diesem zweiten Tutorial gestalten Sie das Quiz anspruchsvoll, indem Sie Code für mathematische Aufgaben hinzufügen, die auf Zufallszahlen basieren. Sie erstellen auch eine Methode namens StartTheQuiz(), um die Aufgaben mit Zahlen aufzufüllen.

In diesem zweiten Tutorial lernen Sie, wie die folgenden Aufgaben ausgeführt werden:

  • Schreiben von Code zum Erstellen von Random-Objekten zur Verwendung in mathematischen Aufgaben
  • Hinzufügen eines Ereignishandlers für die Startschaltfläche
  • Schreiben von Code zum Starten des Quiz

Voraussetzungen

Dieses Tutorial baut auf dem vorherigen Tutorial Erstellen einer WinForms-App für ein Mathequiz auf. Wenn Sie dieses Tutorial noch nicht abgeschlossen haben, sollten Sie es zuerst durcharbeiten.

Erstellen einer zufälligen Additionsaufgabe

  1. Klicken Sie in Ihrem Visual Studio-Projekt auf den Windows Forms-Designer.

  2. Wählen Sie das Formular Form1 aus.

  3. Klicken Sie auf der Menüleiste auf Ansicht>Code. Je nach verwendeter Programmiersprache wird Form1.cs oder Form1.vb angezeigt. Sie können nun den Code hinter dem Formular sehen.

  4. Erstellen Sie ein Random-Objekt, indem Sie oben im Code eine new-Anweisung hinzufügen.

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

Wichtig

Verwenden Sie das Programmiersprachensteuerelement oben rechts auf dieser Seite, um entweder den C#-Codeausschnitt oder den Visual Basic-Codeausschnitt anzuzeigen.

Programming language control for Microsoft Learn

Sie können new-Anweisungen wie diese verwenden, um Schaltflächen, Bezeichnungen und Bereichen sowie OpenFileDialog-, ColorDialog-, SoundPlayer- und Random-Objekte und sogar Formulare zu erstellen. Diese Elemente werden als Objekte bezeichnet.

Wenn Sie das Programm ausführen, wird das Formular gestartet. Der code dahinter erstellt ein Random-Objekt und nennt es randomizer.

Ihr Quiz erfordert Variablen, um die Zufallszahlen zu speichern, die es für jede Aufgabe erstellt. Deklarieren Sie Variablen, bevor Sie sie verwenden. Dies bedeutet, dass deren Namen und Datentypen aufgelistet werden.

  1. Fügen Sie dem Formular zwei Ganzzahlvariablen hinzu, und benennen Sie sie addend1 und addend2.

    Hinweis

    Eine ganzzahlige Variable wird in C# als int oder als Integer in Visual Basic bezeichnet. Mit dieser Art Variablen wird eine positive oder negative Zahl von – 2147483648 bis 2147483647 gespeichert. Dabei können nur ganze Zahlen und keine Dezimalwerte gespeichert werden.

    Wie der folgende Code zeigt, verwenden Sie beim Hinzufügen einer ganzzahligen Variable eine ähnliche Syntax wie beim Hinzufügen des Random-Objekts, wie der folgende Code zeigt.

    // 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. Fügen Sie eine Methode namens StartTheQuiz() hinzu. Diese Methode verwendet die Next()-Methode des Random-Objekts, um Zufallszahlen für die Bezeichnungen zu generieren. StartTheQuiz() füllt schließlich alle Gleichungen auf und startet dann den Timer. Fügen Sie diese Informationen also dem Zusammenfassungskommentar hinzu. Die Funktion sollte wie der folgende Code aussehen.

    /// <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;
    }
    

Wenn Sie die Next()-Methode mit einem Random-Objekt verwenden (z. B. beim Aufrufen von randomizer.Next(51)), erhalten Sie eine Zahl, die kleiner als 51 ist bzw. zwischen 0 und 50 liegt. Dieser Code ruft randomizer.Next(51) auf, sodass die beiden Zufallszahlen zu einer Antwort addiert werden, die zwischen 0 und 100 liegt.

Sehen Sie sich diese Anweisungen genauer an.

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

Diese Anweisungen legen die Text-Eigenschaften von plusLeftLabel und plusRightLabel fest, damit hier die beiden Zufallszahlen angezeigt werden. Bezeichnungssteuerelemente zeigen Werte im Textformat an, und bei der Programmierung enthalten Zeichenfolgen Text. Die ToString()-Methode jeder ganzen Zahl konvertiert die ganze Zahl in Text, der von einer Bezeichnung angezeigt werden kann.

Erstellen zufälliger Subtraktions-, Multiplikations- und Divisionsaufgaben

Der nächste Schritt besteht im Deklarieren von Variablen und Bereitstellen zufälliger Werte für die anderen mathematischen Aufgaben.

  1. Fügen Sie dem Formular nach den Variablen für die Additionsaufgabe ganzzahlige Variablen für die verbleibenden mathematischen Aufgaben hinzu. Der Code sollte wie im folgenden Beispiel aussehen.

    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. Ändern Sie die StartTheQuiz()-Methode, indem Sie den folgenden Code hinzufügen, beginnend mit dem Kommentar „Fill in the subtraction problem“ (Geben Sie die Subtraktionsaufgabe ein).

    /// <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;
    

Dieser Code verwendet die Next()-Methode der Random-Klasse etwas anders als dies bei der Additionsaufgabe der Fall ist. Wenn Sie der Next()-Methode zwei Werte zuweisen, wird eine Zufallszahl ausgewählt, die größer oder gleich dem ersten Wert und kleiner als der zweite Wert ist.

Wenn Sie die Next()-Methode mit zwei Argumenten verwenden, können Sie sicherstellen, dass die Antwort für die Subtraktionsaufgabe eine positive Zahl umfasst, die Antwort für die Multiplikationsaufgabe höchstens 100 beträgt und die Antwort für die Divisionsaufgabe keine Bruchzahl enthält.

Hinzufügen eines Ereignishandlers zur Startschaltfläche

In diesem Abschnitt fügen Sie Code hinzu, um das Quiz zu starten, wenn die Startschaltfläche angeklickt wird. Code, der als Reaktion auf ein Ereignis wie eine Schaltflächenauswahl ausgeführt wird, wird als Ereignishandler bezeichnet.

  1. Doppelklicken Sie im Windows Forms-Designer auf die Schaltfläche Start the quiz (Quiz starten), oder wählen Sie es aus, und klicken Sie dann auf die EINGABETASTE. Der Code des Formulars wird angezeigt, und eine neue Methode ist sichtbar.

    Diese Aktionen fügen der Startschaltfläche einen Click-Ereignishandler hinzu. Wenn Quizteilnehmer*innen auf diese Schaltfläche klicken, führt die App den Code aus, den Sie dieser neuen Methode hinzufügen.

  2. Fügen Sie die folgenden beiden Anweisungen hinzu, damit der Ereignishandler das Quiz startet.

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

Die erste Anweisung ruft die neue StartTheQuiz()-Methode auf. Die zweite Anweisung legt die Enabled-Eigenschaft des startButton-Steuerelements auf false fest, damit Quizteilnehmer*innen während des Quiz nicht auf die Schaltfläche klicken können.

Ausführen der App

  1. Speichern Sie Ihren Code.

  2. Führen Sie Ihre App aus, und klicken Sie dann auf Start the quiz (Quiz starten). Zufällige mathematische Aufgaben werden angezeigt, wie der folgende Screenshot zeigt.

    Screenshot that shows random values in all four math problems. The Start the quiz button appears dimmed.

Nächste Schritte

Im nächsten Tutorial erfahren Sie, wie Sie Ihrem Mathequiz einen Timer hinzufügen und Benutzerantworten überprüfen.