Krok 3: Přidání odpočítávání časovače
Protože se jedná o časovaný kvíz, přidáte časovač odpočítávání.Váš program potřebuje sledovat zbývající počet sekund v průběhu hry.
Přidat časovač odpočítávání
Přidejte číslo (Integer) nazvané timeLeft, stejně jako jste provedli dříve.Váš kód by měl vypadat takto.
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 ' 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; // This int will keep track of the time left. int timeLeft;
Nyní potřeujete něco co skutečně provede počítání, jako je například časovač.Přejděte na Návrhář formulářů a přetáhněte ovládací prvek Časovač ze sady nástrojů (z kategorie Komponenty) do formuláře.Zobrazí se v šedé oblasti v dolní části Návrháře formulářů.
Klikněte na ikonu timer1, kterou jste právě přidáli a nastavte vlastnost Interval na hodnotu 1000.To má za následek, že se událost Tick vyvolá každou sekundu.Poté dvakrát klikněte na ikonu k přidání obslužné rutiny události Tick.Rozhraní IDE přepne do editoru kódu a přejde do nové metody obslužné rutiny události.Přidejte následující příkazy.
Private Sub Timer1_Tick() Handles Timer1.Tick If timeLeft > 0 Then ' Display the new time left ' by updating the Time Left label. timeLeft -= 1 timeLabel.Text = timeLeft & " seconds" 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 startButton.Enabled = True End If End Sub
private void timer1_Tick(object sender, EventArgs e) { if (timeLeft > 0) { // Display the new time left // by updating the Time Left label. timeLeft = timeLeft - 1; timeLabel.Text = timeLeft + " seconds"; } 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; startButton.Enabled = true; } }
Na základě toho, co jste přidali, každou sekundu časovač zkontroluje, zda čas vypršel kontrolou, zda číslo (Integer) timeLeft je větší než 0.Pokud je, je zde zbývající čas.Nejprve časovač odečte 1 z proměnné timeLeft a poté u ovládacího prvku timeLabel aktualizuje vlastnost Text k zobrazení uživateli počet zbývajících sekund.
Jestliže nezbývá žádný čas, časovač se zastaví a změní text ovládacího prvku timeLabel tak, že zobrazí hodnotu Čas vypršel! Zobrazí se okno zprávy sdělující uživateli, že kvíz skončil.Odpověď je odhalena – v tomto případě přidáním addend1 a addend2.Vlastnost ovládacího prvku startButtonEnabled je nastavena na hodnotu pravda, aby bylo tlačítko opět k dispozici.Tímto způsobem může uživatel znovu spustit kvíz.
Právě jste přidali příkaz if else, kterým programům sdělujete, aby se rozhodovaly.Příkaz if else vypadá následovně.
If (something your program will check) Then ' statements that will get executed ' if the thing that the program checked is true Else ' statements that will get executed ' if the thing that the program checked is NOT true End If
if (something your program will check) { // statements that will get executed // if the thing that the program checked is true } else { // statements that will get executed // if the thing that the program checked is NOT true }
Prohlédněte si blíže příkaz, který jste přidali v else bloku k zobrazení odpovědi na úlohu sčítání.
sum.Value = addend1 + addend2
sum.Value = addend1 + addend2;
Jak pravděpodobně víte, addend1 + addend2 přidá dvě hodnoty k sobě.První část (sum.Value) používá vlastnost Value ovládacího prvku NumericUpDown k zobrazení správné odpovědi.Vlastnost Value je také použita později, kdy chcete zkontrolovat odpovědi pro kvíz.
Ovládací prvek NumericUpDown usnadňuje uživatelům zadávání čísel, což je důvod, proč použijete ovládací prvek pro odpovědi na matematické úlohy.Vzhledem k tomu, že všechny odpovědi jsou čísla od 0 do 100, ponecháte výchozí vlastnosti Minimum a Maximum nastaveny na 0 a 100.To způsobí, že ovládací prvek povolí uživateli zadat pouze číslo od 0 do 100.Vzhledem k tomu, že odpovědi mohou být pouze celá čísla, necháte vlastnost DecimalPlaces nastavenou na hodnotu 0, což znamená, že uživatel nemůže zadat desetinná místa.(Pokud jste chtěli povolit uživateli zadat 3.141, ale nikoli 3.1415, můžete nastavit vlastnost DecimalPlaces na hodnotu 3.)
Přidejte tři řádky konec metody StartTheQuiz(), takže kód vypadá následovně.
''' <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 ' 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; // Start the timer. timeLeft = 30; timeLabel.Text = "30 seconds"; timer1.Start(); }
Nyní, když spustíte kvíz, nastaví se číslo (Integer) timeLeft na hodnotu 30 a změní vlastnost ovládacího prvku timeLabelText na 30 sekund.Potom zavolá metodu ovládacího prvku TimerStart() ke spuštění odpočítávání.(Toto ještě neprovádí kontrolu odpovědi – toto přichází jako další na řadu.)
Uložte program a spusťte jej.Po kliknutí na tlačítko Start by měl časovač spustit odpočítávání.Když čas vyprší, kvíz skončí a zobrazí se odpověď.Následující obrázek znázorňuje kvíz v průběhu.
Probíhající matematický kvíz
Chcete-li pokračovat nebo znovu projít
Přechod na další výukový program naleznete v tématu Krok 4: Přidat metodu CheckTheAnswer().
K návratu do předchozího kroku výukového programu přejděte na Krok 2: Vytvoření problém náhodných sčítání.