Daftar Isi:

Minesweeper: 5 Langkah (dengan Gambar)
Minesweeper: 5 Langkah (dengan Gambar)

Video: Minesweeper: 5 Langkah (dengan Gambar)

Video: Minesweeper: 5 Langkah (dengan Gambar)
Video: How To Solve : Game Minesweeper 2024, Juli
Anonim
Kapal penyapu ranjau
Kapal penyapu ranjau

Untuk tugas akhir CPE 133 kami, Chase dan saya memutuskan untuk membuat game ‘Penyapu ranjau’ yang menggunakan tombol dan beralih input dari papan Basys-3 serta kode VHDL. Nama yang lebih baik untuk gim ini bisa jadi 'Rusia Roulette', namun kami ingin menggunakan nama yang lebih ramah keluarga. Gim ini melibatkan pengguna untuk menekan tombol tengah di papan Basys untuk secara acak menetapkan salah satu dari 16 sakelar agar 'aktif' dengan bom. Dua pemain kemudian bergiliran membalik sakelar, satu per satu, hingga salah satu pemain membalik sakelar dengan 'bom'. Ketika itu terjadi, tampilan tujuh segmen memberi tahu para pemain bahwa pemain itu baru saja kalah dalam permainan.

Langkah 1: Ikhtisar

Proyek ini menggunakan banyak modul VHDL yang telah kami gunakan selama kuartal ini. Penghitung empat bit digunakan bersama dengan tepi jam untuk mensimulasikan nomor empat bit acak untuk mengaktifkan salah satu sakelar. Diagram keadaan juga digunakan untuk mengeluarkan kata-kata yang berbeda ke tampilan tujuh segmen, mulai dari 'MAINKAN' ketika para pemain berada di tengah permainan mereka, hingga 'KHALUS' ketika salah satu pemain telah menekan tombol aktif.

Langkah 2: Bahan

  • Dewan Pengembangan Basys3 dari Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (File ini diberikan kepada kami di Polylearn dan ditulis oleh Bryan Mealy)
  • Penghitung 4 bit yang terbuat dari T flip flop
  • Sebuah FSM

Langkah 3: Membuat Game

Membuat Game
Membuat Game
Membuat Game
Membuat Game

Langkah pertama untuk membuat game ini adalah menggambar diagram sirkuit dengan semua komponen yang akan kita gunakan. Input untuk sistem ini adalah tombol 1, 16 sakelar, dan Jam. Outputnya adalah tampilan tujuh segmen dan anoda. Setelah menggambar diagram sirkuit, kami menulis file sumber individual untuk setiap komponen di Vivado dan menggabungkannya menggunakan peta port di bawah file sumber utama.

Seluruh dasar permainan berkisar secara acak menetapkan salah satu dari 16 sakelar untuk aktif dengan bom, dan bagi para pemain untuk tidak mengetahui sakelar mana yang aktif sampai sakelar aktif itu dinyalakan. Kami melihat ke generator nomor acak dan pseudorandom online, tetapi kami akhirnya memutuskan bahwa menggunakan penghitung 4-bit dan menetapkan sakelar yang sesuai untuk aktif cukup acak untuk apa yang kami cari. Kami dapat menggunakan kembali penghitung 4-Bit kami yang kami buat di proyek sebelumnya untuk dapat bekerja untuk tugas ini. Kami menggunakan penghitung untuk membuat angka acak antara 0-15; kemudian di komponen main1, kami menetapkan ekuivalen desimal dari angka acak ke sakelar yang sesuai di papan tulis. Seperti yang terlihat pada skema, baik output X ('bom aktif') dari komponen main1 dan sakelar yang dihidupkan pemain masuk ke FSM1. Mesin negara mengeluarkan nilai Z satu bit yang kemudian dibaca oleh BC_DEC1. Finite State Machine yang kami gunakan memiliki dua status berbeda: di status A, tampilan tujuh segmen menampilkan 'PLAY' dan mesin tetap dalam status itu hingga mesin mengenali bahwa sakelar yang diaktifkan dibalik. Setelah itu terjadi, FSM menuju ke status B di mana ia mengeluarkan 'LOSE' ke tampilan tujuh segmen dan tetap dalam status itu sampai semua 16 sakelar dibalik ke '0'. Ketika kondisi itu terpenuhi, FSM kemudian sekali lagi pergi ke keadaan A dan menunggu para pemain untuk memulai permainan lain. Diagram Moore untuk membantu memahami FSM ini ditunjukkan di atas.

Langkah 4: Modifikasi Masa Depan

Beberapa modifikasi yang kami pertimbangkan untuk dibuat pada game kami termasuk menambahkan lebih banyak bom ke lapangan (mungkin meningkat dari satu menjadi tiga), menambahkan penghitung skor dan beberapa putaran. Kami akhirnya memutuskan untuk tidak melakukan peningkatan ini, karena kami menemukan bahwa bermain game yang lebih lama dan diperpanjang biasanya lebih menegangkan dan pada akhirnya lebih menyenangkan daripada game yang biasanya berakhir setelah tiga atau empat kali membalik tombol.

Langkah 5: Kesimpulan

Kami sangat senang dengan hasil akhir dari proyek ini; bukan hanya karena versi final dari game ini menyenangkan untuk dimainkan, tetapi juga karena membuat dan memprogram proyek mengharuskan kami untuk memanfaatkan sebagian besar, jika tidak semua, yang kami pelajari pada kuartal ini. Kami menggunakan Flip Flops, penghitung, FSM, jam, input pengguna dari papan, dan output ke tampilan tujuh segmen.

Kami juga mempelajari bagaimana beberapa kesalahan sintaks dapat benar-benar merusak program (bahkan jika itu akan dianggap baik-baik saja dalam bahasa pemrograman lain seperti Python atau Java) dan itu hanya setelah beberapa simulasi dan beberapa iterasi dari kode yang diunggah dan diuji pada board, apakah Anda akhirnya dapat mengatasi semua bug dari kode Anda.

Direkomendasikan: