Kapal penyapu ranjau
Minesweeper... ya, game klasik lama yang Anda ingat pernah mainkan di Windows '95 yang bagus di masa lalu (sebenarnya game ini diterapkan dalam pembaruan perangkat lunak Microsoft hingga Windows 8). Minesweeper berasal dari permainan mainframe paling awal pada tahun 1960an dan 1970an. Nenek moyang paling awal dari Kapal Penyapu Ranjau adalah Kubus Jerimac Ratliff. Gaya permainan dasar menjadi segmen populer dari genre permainan puzzle selama tahun 1980an.
Pelajari sejarah Minesweeper Anda di sini.
Tahukah kamu apa sebenarnya Minesweeper itu? Aku juga tidak melakukannya sampai aku membaca ini.
Saya ingat pengalaman pertama saya dengan komputer di tahun 90-an yang sering memainkan game ini, jadi saya berpikir game apa yang lebih baik dari ini untuk menjadi lingkaran penuh?
Versi saya
Memulai
Mainkan Gamenya di sini!
Permainan Dasar
- Pilih tingkat kesulitan Anda.
- Mudah = 9x9, 10 ranjau
- Sedang = 16x16, 40 ranjau
- Keras = 30x30, 160 ranjau
- Klik di mana saja di papan untuk memulai dan memulai pengatur waktu. *Angka-angka tersebut menggambarkan berapa banyak ranjau yang berdekatan dengan sel tertentu.
- Gunakan "Shift + Klik" untuk menambahkan tanda ke sel jika menurut Anda itu milik saya.
Menang/Kalah
- Jika kamu menabrak ranjau... permainan berakhir, kawan.
- Menangkan dengan mengungkap semua sel tanpa ranjau!
(mengerti... MILIKKU... PENYAPU...?)
Teknologi yang Digunakan
Tiga Amigos tua yang baik:
HTML
Seperti yang Anda lihat dari kode sumbernya, HTML sangat ringkas, karena sebagian besar tindakan terjadi di JavaScript. Belum lagi, papan permainannya sendiri hanyalah sebuah meja sederhana.
CSS
Saya bersenang-senang menata ini ke tampilan lama tampilan desktop Windows '95. Saya masih ingin mengotak-atiknya sedikit agar sempurna (tidak dapat menemukan font yang tepat digunakan oleh MS).
Tantangan terbesar saya dengan CSS adalah mencari tahu gaya tabel (batas, ukuran td, dll.)
JavaScript
Karena ini adalah pertama kalinya saya menulis aplikasi web yang berfungsi menggunakan JavaScript, tidak mengherankan jika bagian ini merupakan tantangan terbesar dalam proyek ini bagi saya.
Berikut beberapa hal penting:
- Mengukur tabel secara dinamis saat mengklik tingkat kesulitan
- Saya membuat sebuah fungsi (dengan bantuan Jim, tentu saja) yang mem-parsing nomor dari ID pada tabel yang mengubahnya menjadi variabel ${size} yang pada dasarnya menambahkan baris/kolom berdasarkan nomor yang diambilnya. Konsep ini mengejutkan saya.
- Pada gilirannya, secara dinamis membuat array array agar sesuai dengan tabel visual.
- Membuat kelas "Sel" yang saya gunakan untuk membuat "objek sel" individual yang saya tetapkan banyak properti ke: baris#, kolom#, bom t/f, # bom yang berdekatan (tantangan lain tersendiri, btw) , mengungkapkan t/f, dan menandai t/f.
- Pendekatan ini mempermudah penulisan kode yang lebih ringkas dan tidak mengulanginya berulang kali, serta membuat metode di kelas yang akan dijalankan untuk setiap objek sel.
- Membuat pengatur waktu fungsional yang menampilkan detik-detik yang telah berlalu.
- Mengacak penempatan bom pada array.
- Merender semua yang ada di DOM.
- Menetapkan penangan klik ke berbagai peristiwa.
- Menciptakan logika menang/kalah
- Mencari tahu aliran kontrol bagaimana semua fungsi dirangkai secara sinkron.
- Mempelajari tentang rekursi dan cara menulis fungsi yang menciptakan efek seperti itu dengan benar.
Pilihan Desain Saya
Saya memutuskan untuk menggunakan tampilan OG Windows '95. Saya sangat percaya pada "Meniru. Berasimilasi. Berinovasi." model pembelajaran, jadi untuk proyek pertama saya, saya perlu berjalan sebelum dapat berlari dan memulai dengan fase imitasi dari proses pembelajaran.
Saya sangat senang saya memilih jalan ini, karena saya belajar BANYAK hanya dengan mencoba mencocokkan gaya dari game aslinya.
Oleh karena itu, saya pasti akan segera membuat versi modernnya.
Langkah Selanjutnya!
Proyek ini sungguh sangat menyenangkan bagi saya. Saya berencana untuk terus menyempurnakannya dan merujuk kembali pada banyak pembelajaran di tahun-tahun mendatang.
- Seperti yang saya sebutkan sebelumnya, saya ingin membuat "display toggle" yang mengubah CSS menjadi UI yang modern, bersih, datar, dan minimalis.
- Ada beberapa bug estetika kecil yang bodoh yang membuat saya menarik rambut saya, seperti bagaimana lebar/tinggi sel diubah beberapa piksel ketika papan benar-benar terbuka. Saya perlu memperbaikinya.
- Saya juga ingin menyempurnakan Windows '95, membuat tombol Start melakukan sesuatu, menambahkan jam ke sudut kanan bawah, dan beberapa ikon desktop yang berfungsi.
- Fitur yang sangat sulit yang ingin saya tangani adalah membuat fitur di mana pengguna dapat memilih tingkat kesulitan dengan memasukkan angka (nomor baris/kolom/tambang).
Itu untuk hari hujan.
Terima kasih telah membaca! Saya harap Anda menikmati permainan ini :)