Isi kandungan:

Penyapu Mines: 5 Langkah (dengan Gambar)
Penyapu Mines: 5 Langkah (dengan Gambar)

Video: Penyapu Mines: 5 Langkah (dengan Gambar)

Video: Penyapu Mines: 5 Langkah (dengan Gambar)
Video: Cara menggambar alat kebersihan || Belajar menggambar dan mewarnai yang mudah 2024, Julai
Anonim
Penyapu ranjau
Penyapu ranjau

Untuk projek akhir CPE 133 kami, Chase dan saya memutuskan untuk membuat permainan ‘Minesweeper’ yang menggunakan butang dan menukar input dari papan Basys-3 serta kod VHDL. Nama yang lebih baik untuk permainan ini adalah ‘Russian Roulette’, namun kami mahu menggunakan nama yang lebih mesra keluarga. Permainan ini melibatkan pengguna untuk menekan butang tengah di papan Basys untuk menetapkan secara rawak salah satu daripada 16 suis untuk menjadi 'aktif' dengan bom. Dua pemain kemudian bergilir-gilir menukar suis, satu demi satu, sehingga salah satu pemain membalikkan suis dengan ‘bom’. Apabila itu berlaku, paparan tujuh segmen memberi amaran kepada pemain bahawa pemain itu baru saja kehilangan permainan.

Langkah 1: Gambaran keseluruhan

Projek ini menggunakan banyak modul VHDL yang telah kami gunakan sepanjang suku ini. Pembilang empat bit digunakan bersama dengan tepi jam untuk mensimulasikan nombor empat bit rawak untuk mengaktifkan salah satu suis. Gambarajah keadaan juga digunakan untuk mengeluarkan kata-kata yang berbeza ke paparan tujuh segmen, mulai dari 'MAINKAN' ketika pemain berada di tengah permainan mereka, hingga 'KURANG' ketika salah satu pemain telah membuka suis aktif.

Langkah 2: Bahan

  • Lembaga Pembangunan Basys3 dari Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (Fail ini diberikan kepada kami di Polylearn dan ditulis oleh Bryan Mealy)
  • Kaunter 4 bit yang diperbuat daripada flip flop T
  • FSM

Langkah 3: Membuat Permainan

Membuat Permainan
Membuat Permainan
Membuat Permainan
Membuat Permainan

Langkah pertama untuk membuat permainan ini ialah melukis gambarajah litar dengan semua komponen yang akan kita gunakan. Input untuk sistem ini adalah butang 1, 16 suis, dan Jam. Keluaran adalah paparan tujuh segmen dan anod. Setelah melukis rajah litar, kami menulis fail sumber individu untuk setiap komponen di Vivado dan menyatukannya menggunakan peta port di bawah fail sumber utama.

Keseluruhan asas permainan berputar secara rawak menetapkan salah satu daripada 16 suis untuk aktif dengan bom, dan agar pemain tidak mengetahui suis mana yang aktif sehingga suis aktif itu dihidupkan. Kami melihat penjana nombor rawak dan pseudorandom secara dalam talian, tetapi akhirnya kami memutuskan bahawa menggunakan pembilang 4-bit dan menetapkan suis yang sesuai untuk aktif cukup rawak untuk apa yang kami cari. Kami dapat menggunakan semula kaunter 4-Bit yang kami buat dalam projek sebelumnya untuk dapat melaksanakan tugasan ini. Kami menggunakan pembilang untuk membuat nombor rawak antara 0-15; kemudian dalam komponen main1, kami memberikan sepadan perpuluhan nombor rawak ke suis sepadan pada papan. Seperti yang dilihat dalam skema, output X (‘bom aktif’) dari komponen main1 dan suis yang dihidupkan oleh pemain menuju ke FSM1. Mesin keadaan mengeluarkan nilai Z bit satu yang kemudian dibaca oleh BC_DEC1. Mesin Keadaan Terhingga yang kami gunakan mempunyai dua keadaan yang berbeza: dalam keadaan A, paparan tujuh segmen keluaran ‘MAIN’ dan mesin tetap dalam keadaan itu sehingga menyedari bahawa suis yang diaktifkan dibalik. Setelah itu berlaku, FSM pergi ke keadaan B di mana ia mengeluarkan ‘LOSE’ ke paparan tujuh segmen dan tetap dalam keadaan itu sehingga semua 16 suis dibalik ke ‘0’. Apabila syarat itu dipenuhi, FSM sekali lagi pergi ke keadaan A dan menunggu pemain memulakan permainan lain. Gambar rajah Moore untuk membantu memahami FSM ini ditunjukkan di atas.

Langkah 4: Pengubahsuaian Masa Depan

Beberapa modifikasi yang sedang kami pertimbangkan untuk membuat permainan kami termasuk menambahkan lebih banyak bom ke lapangan (mungkin meningkat dari satu hingga tiga), menambahkan penghitung skor dan beberapa pusingan. Kami akhirnya memutuskan untuk menentang penambahbaikan ini, kerana kami mendapati bahawa bermain permainan yang lebih lama dan diperpanjang biasanya lebih tegang dan pada akhirnya lebih menyenangkan daripada permainan yang biasanya berakhir setelah tiga atau empat pertukaran bertukar.

Langkah 5: Kesimpulannya

Kami sangat gembira dengan hasil akhir projek ini; bukan hanya kerana versi akhir permainan ini menyeronokkan untuk dimainkan, tetapi juga kerana membuat dan memprogramkan projek ini memerlukan kita memanfaatkan sepenuhnya, jika tidak semua yang kita pelajari pada suku ini. Kami menggunakan Flip Flops, counter, FSM, jam, input pengguna dari papan, dan output ke paparan tujuh segmen.

Kami juga belajar bagaimana beberapa kesalahan sintaks dapat mematahkan program sepenuhnya (walaupun mereka dianggap baik dalam bahasa pengaturcaraan lain seperti Python atau Java) dan hanya selepas beberapa simulasi dan beberapa lelaran kod yang dimuat naik dan diuji pada papan, adakah anda akhirnya dapat menyelesaikan semua bug dari kod anda.

Disyorkan: