Bagikan melalui


Tutorial: Menambahkan soal 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 pengamat 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 diberi nama StartTheQuiz() untuk menyelesaikan masalah.

Dalam tutorial kedua ini, Anda mempelajari cara:

  • Tulis kode untuk membuat objek 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 tersebut, lakukan terlebih dahulu.

Membuat soal penambahan acak

  1. Di proyek Visual Studio Anda, pilih Windows Forms Designer.

  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 objek Random dengan menambahkan pernyataan new di dekat bagian atas kode di Form1.cs atau Form1.vb.

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

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

Saat Anda menjalankan program, formulir dimulai. Kode di belakangnya membuat objek Acak dan menamainya randomizer.

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 di Form1.cs atau Form1.vb.

    Nota

    Variabel bilangan bulat dikenal sebagai int di C# atau Integer 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()Form1.cs atau Form1.vb. Metode ini menggunakan metode Next() objek 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 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 metode Next() dengan objek Acak, seperti saat Anda memanggil randomizer.Next(51), Anda mendapatkan nomor acak yang kurang dari 51, atau antara 0 dan 50. Kode ini memanggil randomizer.Next(51) sehingga dua nomor acak menambahkan hingga jawaban antara 0 dan 100.

Lihat lebih dekat pernyataan ini.

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

Pernyataan ini mengatur properti Teks plusLeftLabel dan plusRightLabel sehingga menampilkan dua angka acak. Kontrol label menampilkan nilai dalam format teks, dan dalam pemrograman, string menyimpan teks. Metode ToString() dari setiap bilangan bulat mengonversi bilangan tersebut menjadi teks yang dapat ditampilkan oleh 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 sisa masalah matematika ke formulir Anda, setelah variabel masalah penambahan. Kode di Form1.cs atau Form1.vb 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. Ubah metode StartTheQuiz() di Form1.cs atau Form1.vb 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 metode Next() dari kelas Random dengan cara yang sedikit berbeda dari bagaimana persoalan penambahan dilakukan. Saat Anda memberikan metode Next() dua nilai, metode akan memilih angka acak yang lebih besar dari atau sama dengan nilai pertama dan kurang dari nilai kedua.

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

Menambahkan penanganan aktivitas ke 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 Windows Forms Designer , klik dua kali tombol Mulai kuis , atau pilih lalu pilih Enter. Kode formulir muncul, dan metode baru terlihat.

    Tindakan ini menambahkan Klik penanganan aktivitas 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 StartTheQuiz() baru. Pernyataan kedua mengatur properti Diaktifkan dari kontrol startButton ke false sehingga peserta 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.

    Cuplikan layar yang memperlihatkan nilai acak dalam keempat masalah matematika. Tombol Mulai kuis muncul redup.

Langkah berikutnya

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