Kurz: Přidání matematických problémů do aplikace WinForms matematického kvízu
V této sérii čtyř kurzů vytvoříte matematický kvíz. Kvíz obsahuje čtyři náhodné matematické problémy, na které se kvíz 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, StartTheQuiz()
která má vyplnit 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 a vytvoří aplikaci WinForms matematického kvízu. Pokud jste tento kurz ještě nedokončili, projděte si ho jako první.
Vytvoření úlohy sčítání náhodných čísel
V projektu sady Visual Studio vyberte model Windows Forms Designer.
Vyberte formulář Form1.
Na řádku nabídek vyberte Zobrazit>kód. V závislosti na používaném programovacím jazyce se zobrazí Form1.cs nebo Form1.vb , abyste mohli zobrazit kód za formulářem.
Random Vytvořte objekt přidáním
new
příkazu v horní části kódu.
Důležité
Pomocí ovládacího prvku programovacího jazyka v pravém horním rohu této stránky můžete zobrazit fragment kódu jazyka C# nebo fragment kódu jazyka Visual Basic.
Pomocí podobných příkazů můžete new
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átor.
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 addend1 a addend2.
Poznámka:
Celočíselná proměnná se označuje jako int v jazyce C# nebo celé číslo v jazyce Visual Basic. Tento druh proměnné ukládá kladné nebo záporné číslo od -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()
. Tato metoda používá metodu Random objektu 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; }
Pokud 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 sčítá do odpovědi, která je v rozmezí od 0 do 100.
Podívejte se na tyto příkazy podrobněji.
Tyto příkazy nastavují vlastnosti Text plusLeftLabel a plusRightLabel tak, aby zobrazovaly dvě náhodná čísla. Ovládací prvky popisku zobrazují hodnoty v textovém formátu a v programování obsahují řetězce text. Každá celočíselná ToString()
metoda převede celé číslo na text, který může popisek zobrazit.
Vytvoření náhodných problémů 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é problémy do formuláře za sčítání problémových proměnných. Kód 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()
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á Next() metodu Random třídy trochu odlišně od toho, jak problém sčítání dělá. Když metodě zadáte Next()
dvě hodnoty, vybere náhodné číslo, které je větší nebo rovno první hodnotě a menší než druhá hodnota.
Pomocí Next()
metody 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řidání obslužné rutiny 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 návrháři model Windows Forms poklikejte na tlačítko Spustit kvíz, nebo ho vyberte a pak vyberte Enter. Zobrazí se kód formuláře a zobrazí se nová metoda.
Tyto akce přidají obslužnou rutinu události Kliknutí na tlačítko Start. Když kvíz 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 spustí kvíz.
První příkaz volá novou StartTheQuiz()
metodu. Druhý příkaz nastaví vlastnost Enabled ovládacího prvku startButton takfalse
, aby kvíz nemohl vybrat tlačítko během kvízu.
Spusťte aplikaci
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ů.