Krok 6: Přidání problém odčítání
K přidání odčítací úlohy musíte:
Uložit hodnoty odčítání.
Generovat náhodná čísla pro úlohu (a ujistěte se, že odpověď je od 0 do 100).
Aktualizujte metodu, která kontroluje odpovědi, takže metoda zkontroluje také novou úlohu odčítání.
Aktualizujte obslužnou rutinu události Tick časovače, aby obslužná rutina události vyplnila správnou odpověď, když vyprší čas.
Přidat úlohu odčítání
Nejprve potřebujete místo pro uložení hodnot, takže přidejte dvakrát int (celá čísla) pro úlohu odčítání do formuláře.Nový kód se zobrazí mezi celými čísly sčítání a časovače.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 ' 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;
[!POZNÁMKA]
Názvy nových opisky –minuend a subtrahend– nejsou podmínky programování.Jsou to tradiční jména v aritmetice pro číslo, které bude odečteno (subtrahend) a číslo, které se odečte od (minuend).Rozdíl je minuend mínus subtrahend.Můžete použít jiné názvy, protože program nevyžaduje konkrétní názvy pro čísla, ovládací prvky, komponenty nebo metody.Existují některé pravidla (například názvy nesmí začínat číslicemi), ale obecně platí, že můžete použít názvy jako například x1, x2, x3, x4 a podobně.Ale bylo by obtížné číst kód a téměř nemožné sledování problémů.Budete používat tradiční názvy pro násobení (násobenec x násobitel = součin) a dělení (dělenec ÷ dělitel = podíl) dále v tomto výukovém programu.
Dále upravte metodu StartTheQuiz() k vyplnění náhodné úlohy odčítání.Nový kód následuje komentář "Vyplnění úlohy odčítání".Kód by měl vypadat takto.
''' <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(); }
Tento kód používá Random třídu a metodu Next() mírně odlišně.Pokud ji poskytnete dvě hodnoty, použije náhodné číslo, které je větší než nebo rovno první z nich a menší než druhý.Následující řádek zvolí náhodné číslo od 1 do 100 a uloží jej do proměnné minuend.
minuend = randomizer.Next(1, 101)
minuend = randomizer.Next(1, 101);
Metodu třídy RandomNext() lze volat několika způsoby.Když můžete volat metodu více než jedním způsobem, nazývá se to přetížená metoda a umožňuje použít technologii IntelliSense k prozkoumání.Přijměte jiný pohled na okno popisu tlačítka technologie IntelliSense pro metodu Next().
Okno popisu tlačítka technologie IntelliSense
Všimněte si, jak popis tlačítka ukazuje (+ 2 přetížení).To znamená, že jsou dva způsoby, jak můžete volat metodu Next().Pokud zadáte nový kód pro StartTheQuiz() metodu, můžete zobrazit další informace.Jakmile jste zadali randomizer.Next(,, otevře se okno technologie IntelliSense.Stiskněte klávesu šipka nahoru a šipka dolů k procházení přetížení, jak je znázorněno na následujícím obrázku.
Přetěžování okna Intellisense
Na předchozím obrázku je ten, který chcete, protože umožňuje určit minimální a maximální hodnotu.
Upravte metodu CheckTheAnswer() k vyhledání správné odpovědi na otázku odčítání.Kód by měl vypadat takto.
''' <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; }
&& je operátor logical and jazyka Visual C#.V jazyce Visual Basic je ekvivalentní operátor AndAlso.Je shodný s oznámením, "Pokud addend1 a addend2 je roven hodnotě součtu NumericUpDown a pokud minuend mínus subtrahend je roven hodnotě rozdílu NumericUpDown." Metoda CheckTheAnswer() pouze vrátí hodnotu pravda, pokud je úloha sčítání korektní a úloha odčítání je korektní.
Změňte poslední část obslužné rutiny události Tick časovače, aby vyplnila správnou odpověď, když vyprší čas.Kód by měl vypadat takto.
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; }
Uložte a spusťte váš kód.Váš program by nyní měl mít úlohu odčítání, jak je znázorněno na následujícím obrázku.
Matematický kvíz s úlohou odečítání
Chcete-li pokračovat nebo znovu projít
Přechod na další výukový program naleznete v tématu Krok 7: Přidání násobení a dělení problémy.
K návratu do předchozího kroku výukového programu přejděte na Krok 5: Přidání zadejte obslužné rutiny událostí pro ovládací prvky NumericUpDown.