Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam seri empat tutorial ini, Anda membangun permainan mencocokkan, di mana pemain harus mencocokkan pasangan ikon tersembunyi.
Program Game Pencocokan Anda perlu melacak kontrol Label mana yang dipilih oleh pemain. Setelah pemutar memilih label pertama, program akan menampilkan ikon. Setelah label kedua dipilih, program akan menampilkan kedua ikon untuk waktu yang singkat. Kemudian menyembunyikan kedua ikon.
Program Anda melacak Label mana yang Anda pilih terlebih dahulu dan kedua dengan menggunakan variabel referensi . Timer menyembunyikan ikon dan mengontrol berapa lama untuk menampilkan ikon
- Tambahkan referensi label.
- Tambahkan timer.
Prasyarat
Tutorial ini dibangun berdasarkan tutorial sebelumnya, Membuat aplikasi game yang cocok dan Tambahkan ikon ke game yang cocok. Selesaikan tutorial tersebut terlebih dahulu.
Tambahkan referensi label
Di bagian ini, Anda akan menambahkan dua variabel referensi ke kode Anda. Mereka memantau, atau merujuk ke objek Label.
Tambahkan referensi label ke formulir Anda dengan menggunakan kode berikut di
Form1.csatauForm1.vb.public partial class Form1 : Form { // firstClicked points to the first Label control // that the player clicks, but it will be null // if the player hasn't clicked a label yet Label firstClicked = null; // secondClicked points to the second Label control // that the player clicks Label secondClicked = null;
Jika Anda menggunakan C#, letakkan kode setelah kurung kurawal pembuka dan tepat setelah deklarasi kelas (public partial class Form1 : Form). Jika Anda menggunakan Visual Basic, letakkan kode tepat setelah deklarasi kelas (Public Class Form1).
Pernyataan ini tidak menyebabkan kontrol Label muncul pada formulir karena tidak ada kata kunci new.
Ketika program dimulai, baik firstClicked maupun secondClicked diatur ke null untuk C# atau Nothing untuk Visual Basic.
Ubah penanganan aktivitas Click Anda di
Form1.csatauForm1.vbuntuk menggunakan variabel referensifirstClickedbaru. Hapus pernyataan terakhir dalam metode penanganan aktivitaslabel1_Click()(clickedLabel.ForeColor = Color.Black;) dan ganti dengan pernyataanifsebagai berikut./// <summary> /// Every label's Click event is handled by this event handler /// </summary> /// <param name="sender">The label that was clicked</param> /// <param name="e"></param> private void label1_Click(object sender, EventArgs e) { Label clickedLabel = sender as Label; if (clickedLabel != null) { // If the clicked label is black, the player clicked // an icon that's already been revealed -- // ignore the click if (clickedLabel.ForeColor == Color.Black) return; // If firstClicked is null, this is the first icon // in the pair that the player clicked, // so set firstClicked to the label that the player // clicked, change its color to black, and return if (firstClicked == null) { firstClicked = clickedLabel; firstClicked.ForeColor = Color.Black; return; } } }
Simpan dan jalankan program Anda. Pilih salah satu kontrol label, dan ikonnya muncul. Pilih kontrol label berikutnya, dan perhatikan bahwa tidak ada yang terjadi.
Hanya ikon pertama yang dipilih yang muncul. Ikon lainnya tidak terlihat.
Program ini sudah melacak label pertama yang dipilih pemain.
Referensi firstClicked tidak null di C# atau Nothing di Visual Basic.
Ketika pernyataan if Anda menemukan bahwa firstClicked tidak sama dengan null atau Nothing, pernyataan tersebut akan dijalankan.
Tambahkan timer
Aplikasi Matching Game menggunakan kontrol Timer. Timer menunggu, lalu memicu peristiwa, yang disebut sebagai tanda. Timer dapat memulai tindakan atau mengulangi tindakan secara teratur.
Dalam program Anda, timer memungkinkan pemutar untuk memilih dua ikon. Jika ikon tidak cocok, ikon akan menyembunyikan dua ikon lagi setelah waktu yang singkat.
Pilih tab Kotak Alat, dalam kategori Komponen, klik dua kali atau seret komponen Timer ke formulir Anda. Ikon timer, yang disebut timer1, muncul dalam spasi di bawah formulir.
Pilih ikon Timer1 untuk memilih timer. Di jendela Properti, pilih tombol Properti untuk melihat properti.
Atur properti Interval ke 750, yaitu 750 milidetik.
Properti Interval memberi tahu timer berapa lama untuk menunggu antara kutu , ketika memicu peristiwa Tick. Program Anda memanggil metode Start() untuk memulai timer setelah pemutar memilih label kedua.
Pilih ikon kontrol timer lalu tekan Enter, atau klik dua kali timer. IDE menambahkan penanganan aktivitas Tick kosong ke
Form1.csatauForm1.vb. Ganti kode dengan kode berikut./// <summary> /// This timer is started when the player clicks /// two icons that don't match, /// so it counts three quarters of a second /// and then turns itself off and hides both icons /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void timer1_Tick(object sender, EventArgs e) { // Stop the timer timer1.Stop(); // Hide both icons firstClicked.ForeColor = firstClicked.BackColor; secondClicked.ForeColor = secondClicked.BackColor; // Reset firstClicked and secondClicked // so the next time a label is // clicked, the program knows it's the first click firstClicked = null; secondClicked = null; }
Pengelola acara Tick melakukan tiga hal:
- Ini memastikan timer tidak berjalan dengan memanggil metode Stop().
- Ini menggunakan dua variabel referensi,
firstClickeddansecondClicked, untuk membuat ikon dari dua label yang dipilih pemain tidak terlihat lagi. - Ini mengatur ulang variabel referensi
firstClickeddansecondClickedkenulldi C# danNothingdi Visual Basic.
Buka editor kode dan tambahkan kode ke bagian atas dan bawah metode penanganan aktivitas
label1_Click()diForm1.csatauForm1.vb. Kode ini akan memeriksa apakah timer diaktifkan, mengatur variabel referensisecondClicked, dan memulai timer. Metode penanganan aktivitaslabel1_Click()sekarang terlihat sebagai berikut:/// <summary> /// Every label's Click event is handled by this event handler /// </summary> /// <param name="sender">The label that was clicked</param> /// <param name="e"></param> private void label1_Click(object sender, EventArgs e) { // The timer is only on after two non-matching // icons have been shown to the player, // so ignore any clicks if the timer is running if (timer1.Enabled == true) return; Label clickedLabel = sender as Label; if (clickedLabel != null) { // If the clicked label is black, the player clicked // an icon that's already been revealed -- // ignore the click if (clickedLabel.ForeColor == Color.Black) return; // If firstClicked is null, this is the first icon // in the pair that the player clicked, // so set firstClicked to the label that the player // clicked, change its color to black, and return if (firstClicked == null) { firstClicked = clickedLabel; firstClicked.ForeColor = Color.Black; return; } // If the player gets this far, the timer isn't // running and firstClicked isn't null, // so this must be the second icon the player clicked // Set its color to black secondClicked = clickedLabel; secondClicked.ForeColor = Color.Black; // If the player gets this far, the player // clicked two different icons, so start the // timer (which will wait three quarters of // a second, and then hide the icons) timer1.Start(); } }
- Kode di bagian atas metode memeriksa apakah timer dimulai dengan memeriksa nilai properti Enabled . Jika pemain memilih kontrol Label pertama dan kedua dan timer dimulai, memilih label ketiga tidak akan berpengaruh.
- Kode di bagian bawah metode mengatur variabel referensi
secondClickeduntuk melacak kontrol Label kedua. Kemudian, mengatur warna ikon label tersebut menjadi hitam untuk membuatnya terlihat. Kemudian, ia memulai timer dalam mode satu bidikan, sehingga menunggu 750 milidetik dan kemudian menembakkan satu tanda centang. Penanganan aktivitas Tick timer menyembunyikan dua ikon dan mengatur ulang variabel referensifirstClickeddansecondClicked. Formulir siap bagi pemain untuk memilih sepasang ikon lain.
Nota
Jika Anda menyalin dan menempelkan blok kode label1_Click() daripada memasukkan kode secara manual, pastikan untuk mengganti kode label1_Click() yang ada.
Jika tidak, Anda akan berakhir dengan blok kode duplikat.
- Simpan dan jalankan program Anda. Pilih persegi dan ikon menjadi terlihat. Pilih kotak lain. Ikon muncul secara singkat lalu kedua ikon menghilang.
Program Anda sekarang melacak ikon pertama dan kedua yang Anda pilih. Ini menggunakan timer untuk menjeda sebelum membuat ikon menghilang.
Langkah berikutnya
Lanjutkan ke tutorial berikutnya untuk mempelajari cara menyelesaikan Game Pencocokan Anda.
Tampilkan pesan selamat untuk Permainan Cocok