Návod: Přidání matematických úloh do WinForms aplikace matematického kvízu
V této sérii čtyř kurzů vytvoříte matematický kvíz. Kvíz obsahuje čtyři náhodné matematické úlohy, na které se účastník kvízu snaží odpovědět v zadaném čase.
Ovládací prvky používají kód jazyka C# nebo Visual Basic. V tomto druhém kurzu ztěžujete kvíz přidáním kódu pro matematické problémy založené na náhodných číslech. Vytvoříte také metodu s názvem StartTheQuiz()
, která bude řešit problémy.
V tomto druhém kurzu se naučíte:
- Napište kód pro vytváření náhodných objektů pro použití v matematických problémech.
- Přidejte obslužnou rutinu události pro tlačítko Start.
- Napište kód, který spustí kvíz.
Požadavky
Tento kurz vychází z předchozího kurzu vytvoření matematické kvízové aplikace WinForms. Pokud jste tento kurz ještě nedokončili, projděte si ho jako první.
Vytvoření problému s náhodným sčítáním
V projektu sady Visual Studio vyberte Windows Forms Designeru .
Vyberte formulář Form1.
Na řádku nabídek vyberte Zobrazit>Kód. Form1.cs nebo Form1.vb se zobrazí v závislosti na používaném programovacím jazyce, abyste mohli zobrazit kód za formulářem.
Vytvořte objekt Random přidáním příkazu
new
v horní části kódu v Form1.cs nebo Form1.vb.
Pomocí new
příkazů, jako je tato, můžete vytvářet tlačítka, popisky, panely, OpenFileDialogs, ColorDialogs, SoundPlayers, Randoms a dokonce i formuláře. Tyto položky se nazývají objekty.
Když program spustíte, formulář se spustí. Kód za ním vytvoří náhodný objekt a pojmenuje ho randomizátoru.
Kvíz potřebuje proměnné k uložení náhodných čísel, která pro každý problém vytvoří. Před použitím proměnných je deklarujete, což znamená výpis jejich názvů a datových typů.
Přidejte do formuláře dvě celočíselné proměnné a pojmenujte je sčítanec1 a sčítanec2 v Form1.cs nebo Form1.vb.
Poznámka
Celočíselná proměnná se označuje jako int v jazyce C# nebo celočíselná v jazyce Visual Basic. Tento druh proměnné ukládá kladné nebo záporné číslo z -2147483648 až 2147483647 a může ukládat pouze celá čísla, nikoli desetinná čísla.
Podobnou syntaxi použijete k přidání celočíselné proměnné, jak jste to udělali při přidání objektu Random, jak ukazuje následující kód.
Přidejte metodu s názvem
StartTheQuiz()
Form1.cs nebo Form1.vb. Tato metoda používá metodu Random object Next() k vygenerování náhodných čísel pro popisky.StartTheQuiz()
nakonec vyplní všechny problémy a pak spustí časovač, takže tyto informace přidejte do souhrnného komentáře. Funkce by měla vypadat jako následující kód./// <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; }
Když použijete metodu Next()
s náhodným objektem, například při volání randomizer.Next(51)
, získáte náhodné číslo, které je menší než 51 nebo mezi 0 a 50. Tento kód volá randomizer.Next(51)
, aby se dvě náhodná čísla sečetla do výsledku, který je mezi 0 a 100.
Podívejte se blíže na tato prohlášení.
Tyto příkazy nastaví vlastnosti TextplusLeftLabel a plusRightLabel tak, aby zobrazily dvě náhodná čísla. Ovládací prvky popisku zobrazují hodnoty ve formátu textu a v programování textové řetězce obsahují text. Každá celočíselná metoda ToString()
převede celé číslo na text, který může zobrazit štítek.
Vytvořte náhodné úkoly s odčítáním, násobením a dělením
Dalším krokem je deklarování proměnných a poskytnutí náhodných hodnot pro ostatní matematické problémy.
Přidejte celočíselné proměnné pro zbývající matematické úlohy do formuláře za proměnné pro sčítací úlohy. Kód v Form1.cs nebo Form1.vb by měl vypadat jako v následující ukázce.
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;
Upravte metodu
StartTheQuiz()
v Form1.cs nebo Form1.vb přidáním následujícího kódu, počínaje komentářem "Fill in the subtraction problem" (Vyplnit problém odčítání)./// <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;
Tento kód používá metodu Next() třídy Random trochu jinak, než jak to dělá úloha na sčítání. Když zadáte metodu Next()
dvě hodnoty, vybere náhodné číslo, které je větší nebo rovno první hodnotě a menší než druhá.
Pomocí metody Next()
se dvěma argumenty můžete zajistit, že problém odčítání má kladnou odpověď, odpověď násobení je maximálně 100 a odpověď dělení není zlomek.
Přidejte obslužnou rutinu události na tlačítko Start
V této části přidáte kód, který spustí kvíz při výběru tlačítka Start. Kód, který se spouští v reakci na událost, jako je výběr tlačítka, se nazývá obslužná rutina události.
V Windows Forms Designerupoklikejte na tlačítko Spustit kvíz nebo ho vyberte a stiskněte Enter. Zobrazí se kód formuláře a zobrazí se nová metoda.
Tyto akce přidávají obslužnou rutinu události s názvem Click ke startovacímu tlačítku. Když účastník kvízu vybere toto tlačítko, aplikace spustí kód, který přidáte do této nové metody.
Přidejte následující dva příkazy, aby obslužná rutina události spustila kvíz.
První příkaz volá novou metodu StartTheQuiz()
. Druhý příkaz nastaví vlastnost Enabled ovládacího prvku startButton na false
, aby účastník kvízu nemohl během kvízu vybrat tlačítko.
Spuštění aplikace
Uložte kód.
Spusťte aplikaci a pak vyberte Spustit kvíz. Zobrazí se náhodné matematické problémy, jak ukazuje následující snímek obrazovky.
Další kroky
V dalším kurzu přidáte časovač do matematického kvízu a zkontrolujete odpovědi uživatelů.