Udostępnij za pośrednictwem


Krok 6: Dodawanie Problem odejmowania

Aby dodać problem odejmowanie, trzeba:

  • Przechowywanie wartości odejmowania.

  • Generowanie liczb losowych tego problemu (i upewnij się, że odpowiedź jest między 0 a 100).

  • Aktualizowanie metodę, która sprawdza, czy odpowiedzi tak, że metody kontroli zbyt nowy problem odejmowania.

  • Obsługi zdarzeń osi sieci timer należy zaktualizować, tak, aby program obsługi zdarzeń wypełnia poprawnej odpowiedzi, gdy skończy się czas.

Aby dodać problem odejmowania

  1. Tak potrzebne miejsce do przechowywania wartości, po pierwsze, dodać dwie wskazówki (liczby całkowite) dla odejmowania problem do formularza.Nowy kod pojawia się między liczbami całkowitymi dodanie i całkowitą czasomierza.Kod powinien wyglądać następująco.

    Public Class Form1
    
        ' Create a Random object to generate random numbers.
        Private randomizer As New Random
    
        ' These Integers will store the numbers
        ' for the addition problem.
        Private addend1 As Integer
        Private addend2 As Integer
    
        ' These Integers will store the numbers
        ' for the subtraction problem.
        Private minuend As Integer
        Private subtrahend As Integer
    
        ' This Integer will keep track of the time left.
        Private timeLeft As Integer
    
    public partial class Form1 : Form
    {
        // Create a Random object to generate random numbers.
        Random randomizer = new Random();
    
        // These ints will store the numbers
        // for the addition problem.
        int addend1;
        int addend2;
    
        // These ints will store the numbers
        // for the subtraction problem.
        int minuend;
        int subtrahend;
    
        // This int will keep track of the time left.
        int timeLeft;
    

    [!UWAGA]

    Nazwy nowego wskazówki —odjemna i odjemnik— nie są programowania warunków.Są one tradycyjnych nazw arytmetyki, numer, który jest odejmowany (odjemnik) oraz numer, który jest odejmowany od (odjemna).Różnica polega na odjemna minus odjemnik.Można użyć innych nazw, ponieważ program nie wymaga określonej nazwy wskazówki, formanty, składniki lub metod.Istnieją pewne reguły (na przykład nazwy nie może zaczynać cyfr), ale ogólnie rzecz biorąc, można użyć nazwy takie jak x 1, x 2, x 3, x 4 i tak dalej.Jednak byłoby trudno odczytać kodu i niemal niemożliwy do śledzenia problemów.Będzie używać tradycyjnych nazw dla mnożenia (multiplicand × współczynnik = produktu) i dzielenia (dzielnik ÷ dywidendy = iloraz) później w tym samouczku.

  2. Następnie należy zmodyfikować StartTheQuiz() metody do wypełnienia problem losowe odejmowania.Nowy kod następuje komentarz "Wypełnij problem odejmowania".Kod powinien wyglądać następująco.

    ''' <summary>
    ''' Start the quiz by filling in all of the problems
    ''' and starting the timer.
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub StartTheQuiz()
    
        ' Fill in the addition problem.
        addend1 = randomizer.Next(51)
        addend2 = randomizer.Next(51)
        plusLeftLabel.Text = addend1.ToString()
        plusRightLabel.Text = addend2.ToString()
        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
    
        ' Start the timer.
        timeLeft = 30
        timeLabel.Text = "30 seconds"
        Timer1.Start()
    
    End Sub
    
    /// <summary>
    /// Start the quiz by filling in all of the problems
    /// and starting the timer.
    /// </summary>
    public void StartTheQuiz()
    {
        // Fill in the addition problem.
        addend1 = randomizer.Next(51);
        addend2 = randomizer.Next(51);
        plusLeftLabel.Text = addend1.ToString();
        plusRightLabel.Text = addend2.ToString();
        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;
    
        // Start the timer.
        timeLeft = 30;
        timeLabel.Text = "30 seconds"; 
        timer1.Start();
    }
    

    Ten kod zawiera Random klasy Next() metoda nieco inaczej.Gdy nadać dwie wartości jej propozycji od liczbę losową, która jest większa lub równa pierwsza i mniejsza niż drugi.Następujący wiersz wybiera losowo liczba od 1 do 100 i zapisuje go w odjemna.

    minuend = randomizer.Next(1, 101)
    
    minuend = randomizer.Next(1, 101);
    

    Random Klasy Next() metoda może być wywoływana na kilka sposobów.Metodę można wywołać więcej niż jedną stronę, która jest nazywany przeciążona metoda, i technologii IntelliSense można użyć do eksplorowania to.Innym podglądu IntelliSense etykietce okna Next() metody.

    Etykietka narzędzia okna IntelliSense

    Kolejna metoda

    Należy zauważyć, jak pokazuje etykietka narzędzia (+ 2 overload(s)).Oznacza to, że istnieją dwa sposoby, które może wywoływać Next() metody.Podczas wpisywania nowy kod dla StartTheQuiz() metody, można zobaczyć więcej informacji.Natychmiast po wpisaniu randomizer.Next(, otwiera okna IntelliSense.Naciśnij klawisze Strzałka w górę i Strzałka w dół, aby przechodzić overloads, jak pokazano na poniższym obrazie.

    Overloads okna IntelliSense

    Przeciążenia w oknie technologii IntelliSense

    W poprzednim obraz jest żądany, ponieważ pozwala określić minimalną i maksymalną wartość.

  3. Modyfikowanie CheckTheAnswer() metodę, aby sprawdzić, czy odpowiedzi poprawne odejmowania.Kod powinien wyglądać następująco.

    ''' <summary>
    ''' Check the answer to see if the user got everything right.
    ''' </summary>
    ''' <returns>True if the answer's correct, false otherwise.</returns>
    ''' <remarks></remarks>
    Public Function CheckTheAnswer() As Boolean
    
        If addend1 + addend2 = sum.Value AndAlso 
           minuend - subtrahend = difference.Value Then
    
            Return True
        Else
            Return False
        End If
    
    End Function
    
    /// <summary>
    /// Check the answer to see if the user got everything right.
    /// </summary>
    /// <returns>True if the answer's correct, false otherwise.</returns>
    private bool CheckTheAnswer()
    {
        if ((addend1 + addend2 == sum.Value)
            && (minuend - subtrahend == difference.Value))
            return true;
        else
            return false;
    }
    

    && Jest Visual C# logical and operatora.W języku Visual Basic jest równoważne operator AndAlso.Jest identyczny z informacją o tym, "Jeśli addend1 plus addend2 jest równa wartości sumy NumericUpDown, i jeśli odjemna minus odjemnik jest równa wartości różnica NumericUpDown." CheckTheAnswer() Metoda tylko zwraca wartość true, jeśli problem dodanie jest poprawny i problem odejmowania jest poprawny.

  4. Ostatnia część obsługi zdarzeń podziałki timer należy zmienić, aby wypełniał w poprawnej odpowiedzi, skończy się czas.Kod powinien wyglądać następująco.

    Else
        ' If the user ran out of time, stop the timer, show
        ' a MessageBox, and fill in the answers.
        Timer1.Stop()
        timeLabel.Text = "Time's up!"
        MessageBox.Show("You didn't finish in time.", "Sorry")
        sum.Value = addend1 + addend2
        difference.Value = minuend - subtrahend
        startButton.Enabled = True
    End If
    
    else
    {
        // If the user ran out of time, stop the timer, show
        // a MessageBox, and fill in the answers.
        timer1.Stop();
        timeLabel.Text = "Time's up!";
        MessageBox.Show("You didn't finish in time.", "Sorry");
        sum.Value = addend1 + addend2;
        difference.Value = minuend - subtrahend;
        startButton.Enabled = true;
    }
    
  5. Zapisz i uruchom kodu.Program powinien już problem odejmowanie, jak pokazano na poniższej ilustracji.

    Quiz Math z problemem odejmowania

    Kwiz matematyczny z problemem odejmowania

Aby kontynuować, lub przejrzeć