Bagikan melalui


Tutorial: Menambahkan masalah matematika ke aplikasi WinForms kuis matematika

Dalam rangkaian empat tutorial ini, Anda akan membangun kuis matematika. Kuis berisi empat masalah matematika acak yang coba dijawab oleh peserta kuis dalam waktu tertentu.

Kontrol menggunakan kode C# atau Visual Basic. Dalam tutorial kedua ini, Anda membuat kuis menantang dengan menambahkan kode untuk masalah matematika yang didasarkan pada angka acak. Anda juga membuat metode yang dinamai StartTheQuiz() untuk mengisi masalah.

Dalam tutorial ini, Anda akan mempelajari cara untuk:

  • Menulis kode untuk membuat obyek Acak untuk digunakan dalam masalah matematika.
  • Tambahkan penanganan aktivitas untuk tombol mulai.
  • Tulis kode untuk memulai kuis.

Prasyarat

Tutorial ini dibangun pada tutorial sebelumnya, Membuat aplikasi WinForms kuis matematika. Jika Anda belum menyelesaikan tutorial itu, lanjutkan terlebih dahulu.

Membuat masalah penambahan acak

  1. Di proyek Visual Studio Anda, pilih Perancang Formulir Windows.

  2. Pilih formulir, Form1.

  3. Pada bilah menu, pilih Tampilkan>Kode. Form1.cs atau Form1.vb muncul, tergantung pada bahasa pemrograman yang Anda gunakan, sehingga Anda dapat melihat kode di belakang formulir.

  4. Buat Random objek dengan menambahkan new pernyataan di dekat bagian atas kode.

    public partial class Form1 : Form
    {
        // Create a Random object called randomizer 
        // to generate random numbers.
        Random randomizer = new Random();
    

Penting

Gunakan kontrol bahasa pemrogram di kanan atas halaman ini untuk melihat cuplikan kode C# atau cuplikan kode Visual Basic.

Programming language control for Microsoft Learn

Anda dapat menggunakan new pernyataan seperti ini untuk membuat tombol, label, panel, OpenFileDialogs, ColorDialogs, SoundPlayers, Randoms, dan bahkan formulir. Item ini disebut objek.

Ketika Anda menjalankan program Anda, formulir dimulai. Kode di belakangnya membuat objek Acak dan menamainya pengacak.

Kuis Anda memerlukan variabel untuk menyimpan angka acak yang dibuatnya untuk setiap masalah. Sebelum menggunakan variabel, Anda mendeklarasikannya, yang berarti mencantumkan nama dan jenis datanya.

  1. Tambahkan dua variabel bilangan bulat ke formulir, dan beri nama addend1 dan addend2.

    Catatan

    Variabel bilangan bulat dikenal sebagai int dalam C# atau Bilangan Bulat di Visual Basic. Variabel semacam ini menyimpan angka positif atau negatif dari -2147483648 melalui 2147483647 dan hanya dapat menyimpan bilangan bulat, bukan desimal.

    Anda menggunakan sintaks serupa untuk menambahkan variabel bilangan bulat seperti yang Anda lakukan untuk menambahkan objek Acak, seperti yang ditunjukkan kode berikut.

    // 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;
    

  1. Tambahkan metode yang bernama StartTheQuiz(). Metode ini menggunakan metode Objek Next() acak untuk menghasilkan angka acak untuk label. StartTheQuiz() pada akhirnya akan mengisi semua masalah dan kemudian memulai timer, jadi tambahkan informasi ini ke komentar ringkasan. Fungsi ini akan terlihat seperti kode berikut.

    /// <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;
    }
    

Saat Anda menggunakan Next() metode dengan objek Acak, seperti saat Anda memanggil randomizer.Next(51), Anda mendapatkan nomor acak kurang dari 51, atau antara 0 dan 50. Kode ini memanggil randomizer.Next(51) sehingga dua angka acak menambahkan hingga jawaban antara 0 dan 100.

Lihat lebih dekat pernyataan-pernyataan ini.

plusLeftLabel.Text = addend1.ToString();
plusRightLabel.Text = addend2.ToString();

Pernyataan ini mengatur properti TeksplusLeftLabel dan plusRightLabel sehingga menampilkan dua angka acak. Kontrol label menampilkan nilai dalam format teks, dan dalam pemrograman, string menahan teks. Setiap metode bilangan ToString() bulat mengonversi bilangan bulat menjadi teks yang dapat ditampilkan label.

Membuat masalah pengurangan, perkalian, dan pembagian acak

Langkah selanjutnya adalah mendeklarasikan variabel dan memberikan nilai acak untuk masalah matematika lainnya.

  1. Tambahkan variabel bilangan bulat untuk masalah matematika yang tersisa ke formulir Anda, setelah variabel masalah penambahan. Kode Anda akan terlihat seperti sampel berikut.

    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;
    

  1. StartTheQuiz() Ubah metode dengan menambahkan kode berikut, dimulai dengan komentar "Isi masalah pengurangan".

    /// <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;
    

Kode ini menggunakan Next() metode Random kelas sedikit berbeda dari bagaimana masalah penambahan melakukannya. Saat Anda memberikan Next() metode dua nilai, metode ini memilih angka acak yang lebih besar dari atau sama dengan nilai pertama dan kurang dari yang kedua.

Dengan menggunakan Next() metode dengan dua argumen, Anda dapat memastikan masalah pengurangan memiliki jawaban positif, jawaban perkalian paling banyak 100, dan jawaban pembagian bukan pecahan.

Menambahkan penanganan aktivitas untuk tombol mulai.

Di bagian ini, Anda menambahkan kode untuk memulai kuis saat tombol mulai dipilih. Kode yang berjalan sebagai reaksi terhadap peristiwa seperti pemilihan tombol disebut penanganan aktivitas.

  1. Di Desainer Formulir Windows, klik dua kali tombol Mulai kuis, atau pilih lalu pilih Enter. Kode formulir muncul, dan metode baru terlihat.

    Tindakan ini menambahkan penanganan aktivitas Klik ke tombol mulai. Saat pengambil kuis memilih tombol ini, aplikasi menjalankan kode yang akan Anda tambahkan ke metode baru ini.

  2. Tambahkan dua pernyataan berikut sehingga penanganan aktivitas memulai kuis.

    private void startButton_Click(object sender, EventArgs e)
    {
        StartTheQuiz();
        startButton.Enabled = false;           
    }
    

Pernyataan pertama memanggil metode baru StartTheQuiz(). Pernyataan kedua mengatur properti Diaktifkan dari kontrol startButton ke false sehingga pengalih kuis tidak dapat memilih tombol selama kuis.

Jalankan aplikasi Anda

  1. Simpan kode Anda.

  2. Jalankan aplikasi Anda, lalu pilih Mulai kuis. Masalah matematika acak muncul, seperti yang ditunjukkan oleh cuplikan layar berikut.

    Screenshot that shows random values in all four math problems. The Start the quiz button appears dimmed.

Langkah berikutnya

Lanjutkan ke tutorial berikutnya untuk menambahkan timer ke kuis matematika Anda dan memeriksa jawaban pengguna.