Krok 2. Utworzenie problemu losowego dodawania
W drugiej części tego samouczka utrudnisz quiz, dodając zagadnienia matematyczne oparte na liczbach losowych.Można również utworzyć metodę o nazwie StartTheQuiz(), wypełnia ona problemy i uruchamia minutnik.W dalszej części tego samouczka dodasz problemy odejmowania, mnożenia i dzielenia.
[!UWAGA]
Ten temat jest częścią serii samouczków na temat podstawowych pojęć kodowania.Aby uzyskać przegląd samouczka, zobacz Samouczek 2: Utworzenie kwizu matematycznego z limitem czasu.
Aby utworzyć losowy problem dodawania
W projektancie formularza wybierz formularz (formularz Form1).
Na pasku menu należy wybrać Widok , a potem Kod.
Wyświetla się Form1.cs lub Form1.vb, w zależności od stosowanego języka programowania, aby można było przeglądać kod formularza.
Stwórz Random obiekt poprzez dodanie new instrukcji w górnej części kodu, jak poniżej.
Public Class Form1 ' Create a Random object called randomizer ' to generate random numbers. Private randomizer As New Random
public partial class Form1 : Form { // Create a Random object called randomizer // to generate random numbers. Random randomizer = new Random();
Dodano obiekt Random do formularza i nadano mu nazwę randomizer.
Random jest znany jako obiekt.Prawdopodobnie słyszałeś już kiedyś to słowo, w następnym samouczku dowiesz się więcej, co ono oznacza dla programowania.Teraz wystarczy pamiętać, że można użyć instrukcji new, aby utworzyć przyciski, etykiety, panele, okna OpenFileDialog, ColorDialog, SoundPlayer, Random, a nawet formularze; te elementy są traktowane jak obiekty.Kiedy uruchamiasz program, formularz zostaje uruchomiony, a kod związany z nim tworzy obiekt Random i nadaje mu nazwę randomizer.
Wkrótce będziesz tworzyć metodę sprawdzania odpowiedzi, dlatego quiz musi używać zmiennych do przechowywania liczb losowych, który generuje dla każdego problemu.Zobacz Zmienne w Visual Basic lub Typy (Przewodnik programowania w języku C#).Aby prawidłowo używać zmiennych, musisz je zadeklarować, co oznacza utworzenie listy ich nazw i typów danych.
Dodaj dwie zmienne w postaci liczb całkowitych do formularza i nadaj im nazwy addend1 i addend2.
[!UWAGA]
Zmienna będąca liczbą całkowitą jest znana jako int w języku C# lub Liczba całkowita w języku Visual Basic.Tego typu zmienna przechowuje liczbę dodatnią lub ujemną od -2147483648 do 2147483647 i może przechowywać jedynie liczby całkowite, nie miejsca po przecinku.
Użyj podobnej składni w celu dodawania zmiennej typu liczba całkowita, jak w przypadku dodawania obiektu Random, co ilustruje poniższy kod.
' Create a Random object called randomizer ' to generate random numbers. Private randomizer As New Random ' These integer variables store the numbers ' for the addition problem. Private addend1 As Integer Private addend2 As Integer
// 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;
Dodaj metodę o nazwie StartTheQuiz(), która używa metody Next() obiektu Random do pokazania liczb losowych w etykietach.StartTheQuiz() ostatecznie wypełni wszystkie problemy i następnie uruchomi timer, więc dodaj komentarz.Funkcja powinna 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. ' 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 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. // 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; }
Zwróć uwagę, że po wprowadzeniu kropki (.) po generatorze losowym w kodzie okno technologii IntelliSense otwiera i wyświetla wszystkie metody obiektu Random, które można wywoływać.Na przykład, IntelliSense wyświetla metodę Next() w następujący sposób.
Metoda Next
Po wprowadzeniu kropkę po obiekcie, IntelliSense pokazuje listę członków obiektu, takich jak właściwości, metody i zdarzenia.
[!UWAGA]
Gdy używasz metody Next() z obiektem Random, na przykład gdy wywołujesz randomizer.Next(50), otrzymujesz losową liczbę, która jest mniejsza niż 50 (od 0 do 49).W tym przykładzie wywołujesz randomizer.Next(51).Użyto 51 zamiast 50, dlatego dwie liczby losowe zostaną do siebie dodane, aby utworzyć odpowiedź w zakresie od 0 do 100.W przypadku przekazania 50 do metody Next(), wybiera ona numer od 0 do 49, więc najwyższa możliwa odpowiedź to 98, a nie 100.Po uruchomieniu pierwszych dwóch instrukcji w metodzie każdy z dwóch zmiennych w postaci liczb całkowitych, addend1 i addend2, zawiera losową liczbę od 0 do 50.Ten zrzut ekranu pokazuje kod Visual C#, ale technologia IntelliSense działa tak samo dla języka Visual Basic.
Przyjrzyj się bliżej tym instrukcjom.
' 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()
plusLeftLabel.Text = addend1.ToString(); plusRightLabel.Text = addend2.ToString();
Instrukcje ustawiają właściwości TextplusLeftLabel i plusRightLabel, tak że wyświetlają one dwie liczby losowe.Musisz użyć metody liczb całkowitych ToString(), aby konwertować liczby na tekst. (W programowaniu ciąg oznacza tekst.Formanty etykiet wyświetlają tylko tekst, nie wyświetlają liczb.
W oknie projektu kliknij dwukrotnie przycisk Start lub wybierz go, a następnie naciśnij klawisz Enter.
Gdy uczestnik quizu wybierze ten przycisk, quiz powinien się rozpocząć, a właśnie dodałeś program obsługi zdarzeń Click, aby zaimplementować to zachowanie.
Dodaj następujące dwie instrukcje.
' Call the StartTheQuiz() method and enable ' the Start button. Private Sub startButton_Click() Handles startButton.Click StartTheQuiz() startButton.Enabled = False End Sub
private void startButton_Click(object sender, EventArgs e) { StartTheQuiz(); startButton.Enabled = false; }
Pierwsza instrukcja wywołuje nową metodę StartTheQuiz().Druga instrukcja ustawia właściwość Enabled formantu startButton na False, tak że uczestnik quizu nie może wybrać przycisku podczas quizu.
Zapisz swój kod, uruchom go, a następnie wybierz przycisk Start.
Problem losowego dodawania pojawi się, jak na poniższej ilustracji pokazano.
Problem losowego dodawania
W następnym kroku samouczka dodasz sumę.
Aby kontynuować lub przeglądnąć
Aby przejść do kolejnego kroku samouczka, zobacz Krok 3. Dodawanie czasomierza odliczania.
Aby powrócić do poprzedniego kroku samouczka, zobacz Krok 1. Utworzenie projektu i dodawanie etykiet do formularza.