Daftar Isi:

Game Waktu Kompetitif 2 Pemain VS: 4 Langkah
Game Waktu Kompetitif 2 Pemain VS: 4 Langkah

Video: Game Waktu Kompetitif 2 Pemain VS: 4 Langkah

Video: Game Waktu Kompetitif 2 Pemain VS: 4 Langkah
Video: MAKRO LEVEL 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 2024, Juli
Anonim
Game Waktu Kompetitif 2 Pemain VS
Game Waktu Kompetitif 2 Pemain VS

Anda akan perlu:

1. Digilent Basys 3, FPGA Board (atau FPGA lainnya,)

2. Versi Vivado yang relatif terbaru, atau lingkungan VHDL lainnya

3. Komputer yang dapat menjalankan program tersebut.

Langkah 1: Game Itu Sendiri

Permainan itu sendiri
Permainan itu sendiri

Bagaimana FSM berinteraksi dengan modul.

Cara bermain

Untuk memulai, Anda menekan tombol tengah. Ini akan menyebabkan “99”, yang mewakili kesehatan pemain dua, ditampilkan pada tampilan tujuh segmen. Kemudian, LED akan menyala secara berurutan dari kanan ke kiri. Ini membentuk bar daya. Setelah bilah daya penuh, itu akan diatur ulang. Tujuan dari pemain satu adalah untuk membalik saklar mereka ketika bar setinggi mungkin. Semakin banyak LED menyala, semakin banyak kerusakan yang dilakukan pemain pada pemain dua. Setelah pemain satu membalik sakelar mereka, kerusakan yang diberikan dikurangi dari kesehatan pemain dua. Kemudian, beralih ke giliran pemain dua. Sekarang, angka yang ditampilkan mewakili kesehatan pemain, dan bilah daya terisi dari kiri ke kanan. Setelah pemain dua bergerak, kerusakan dikurangi, dan kembali ke giliran pemain satu lagi. Ini berulang hingga satu pemain mencapai 0 kesehatan. Video fungsi ini terlampir.

Langkah 2: FSM

FSM
FSM
FSM
FSM
FSM
FSM
FSM
FSM

Game ini pada dasarnya adalah satu mesin keadaan terbatas yang besar, di mana beberapa logika kompleks terjadi berdasarkan keadaan tempat FSM berada.

Status 1: Menu Status pertama adalah layar menu, yang merupakan salah satu status yang lebih sederhana. Ini termasuk tampilan tujuh segmen yang menampilkan kata "MAINKAN", dan tombol yang menyebabkan permainan dimulai. Tombolnya, BTN, membawa kita ke keadaan berikutnya, yaitu giliran pemain.

Status 2: Giliran Pemain Satu

Giliran pemain satu mengaktifkan sinyal yang menyebabkan tampilan tujuh segmen menampilkan kesehatan Pemain dua. Sinyal lain menyala untuk mengaktifkan register geser yang diimpor dari modul lain yang kita buat (Pone.vhd). Register geser ini membuat LED menyala seperti pengukur daya yang meningkat di game lain, dan kemudian akan diatur ulang ke 0 ketika mencapai jumlah maksimum LED yang bisa menyala. Ini diperbarui di tepi naik jam yang diperoleh dari barclock.vhd, yang dimodifikasi dari file lab yang dipinjam. Kami memiliki bilah pemain mulai dari kanan, dan mengisi ke kiri, karena sakelar pemain juga ada di kiri (untuk pengalaman pengguna yang intuitif). Setelah sakelar dibalik, status beralih ke pemain satu pengurangan, dan jumlah LED aktif disimpan dalam sinyal.

State 3: Player One Deduct Sinyal dengan jumlah LED yang aktif menentukan jumlah health yang akan dikurangi. Ini dilakukan dengan memiliki register geser lain (deductor1.vhd) yang alih-alih menaikkan LED, menguranginya. Ini mengurangi sisi naik dari salah satu modul div jam yang kami pinjam dan modifikasi (downcounterclock.vhd). Tepat saat satu LED dimatikan, satu poin kesehatan dikurangi dari total kesehatan pemain dua. Jika selama proses ini pemain dua mencapai 0, kami berhenti dan segera beralih ke status "Game over". Jika tidak, setelah vektor LED mencapai "0000000000000000", kami beralih ke giliran pemain dua.

Status 4: Giliran Pemain Dua Giliran pemain dua persis seperti giliran pemain satu, kecuali register geser untuknya (Ptwo.bhd) bergerak dari kiri ke kanan, dan sakelar berada di sisi kanan papan. Sebuah sinyal diaktifkan untuk menampilkan tampilan kesehatan Player 1. Setelah sakelar 2 aktif, ini beralih ke giliran pengurangan Pemain Dua.

Tahap 5: Pemain Dua Deduct Sama seperti giliran pemain dua, pemain dua mengurangi banyak bertindak seperti pemain satu mengurangi. Perbedaan utama adalah bahwa register geser yang mengontrol pematian LED berjalan ke arah yang berlawanan, yang merupakan modifikasi mudah untuk dilakukan setelah Anda membuat pengurangan pemain bekerja dengan benar.

Tahap 6: Game Over Jika pada suatu saat salah satu pemain mencapai kesehatan nol, game beralih ke status ini. Tidak ada tampilan yang mewah. Jika BTN satu ditekan, maka kesehatan diatur ulang ke 99, dan status kembali ke menu, secara efektif memulai permainan.

Langkah 3: Modul

Modul
Modul

Diagram Kotak Hitam untuk Game

Downcounterclock (berdasarkan modul clk_div.vhd oleh Bryan Mealy):

Ini adalah jam yang menangani waktu pengurang. Konstanta bernama max_count 3x lebih banyak dari konstanta max_count barclock. Ini akan membuat deduktor 3x lebih lambat dari kecepatan bar.

Barclock - (berdasarkan modul clk_div.vhd oleh Bryan Mealy):

Jam ini menangani waktu pengukur daya, yang kami buat dengan cepat untuk menambah kesulitan pada permainan. Pengaturan waktu ini dapat disesuaikan dengan keinginan Anda, meningkatkan kecepatan dengan membuat konstanta max_count menjadi angka yang lebih besar, atau menguranginya dengan membuat max_count menjadi angka yang lebih kecil. Sseg_dec - (Ditulis oleh Bryan Mealy): Modul ini mengambil angka 8 bit sebagai input, yang didekodekan, mengubah angka menjadi ekuivalen desimalnya, dan kemudian menghasilkan tampilan tujuh segmen. Agar file ini berfungsi, Anda perlu memastikan batasan Anda cocok dengan batasan kami.

Roti manis:

Ini adalah register geser yang menggeser bit ke kiri, menambahkan satu bit panas agar terlihat seperti pengukur daya meningkat. Ketika semua bit panas, semua bit diatur ulang ke '0', dan siklus dimulai kembali.

Kedua:

Ini adalah versi terbalik dari modul P1.

Pengurang1:

Ini adalah kombinasi dari register geser dan subtraktor. Register geser bergerak ke arah yang berlawanan dengan register geser P1, menunjukkan pengurangan. Ini juga mengurangi 1 dari kesehatan Pemain 2 untuk setiap siklus jam, jadi dengan kombinasi kedua fungsi ini, akan terlihat seperti kesehatan lawan berkurang 1 untuk setiap led dari bilah kesehatan yang turun.

Deductor2: Ini adalah versi terbalik dari modul Deductor1.

PlayDecoder (dipinjam dan sedikit dimodifikasi dari ekchen35649 instruksinya 133): Ini digunakan dalam status menu untuk menampilkan kata "MAINKAN" pada dekoder tujuh segmen.

Langkah 4: Uji

Game ini awalnya terinspirasi dari salah satu minigame dari Kirby. Ini adalah permainan dua pemain sederhana yang dapat dimainkan di Basys 3 Board, atau FPGA apa pun.

Langkah 1: Bahan yang Diperlukan

Anda memerlukan: Digilent Basys 3, FPGA Board (atau lainnya) Versi Vivado yang relatif terbaru, atau lingkungan vhdl lainnya Komputer yang dapat menjalankan program yang disebutkan Otak

Langkah 2: Game Itu Sendiri

Cara bermain

Untuk memulai, Anda menekan tombol tengah. Ini akan menyebabkan “99”, yang mewakili kesehatan pemain dua, ditampilkan pada tampilan tujuh segmen. Kemudian, LED akan menyala secara berurutan dari kanan ke kiri. Ini membentuk bar daya. Setelah bilah daya penuh, itu akan diatur ulang. Tujuan dari pemain satu adalah untuk membalik saklar mereka ketika bar setinggi mungkin. Semakin banyak LED menyala, semakin banyak kerusakan yang dilakukan pemain pada pemain dua. Setelah pemain satu membalik sakelar mereka, kerusakan yang diberikan dikurangi dari kesehatan pemain dua. Kemudian, beralih ke giliran pemain dua. Sekarang, angka yang ditampilkan mewakili kesehatan pemain, dan bilah daya terisi dari kiri ke kanan. Setelah pemain dua bergerak, kerusakan dikurangi, dan kembali ke giliran pemain satu lagi. Ini berulang hingga satu pemain mencapai 0 kesehatan. Video fungsi ini terlampir.

Untuk memainkan game, muat di papan basys, dan tekan tombol tengah. Cobalah untuk membalik sakelar dengan sebanyak mungkin LED aktif, lalu tunggu dan perhatikan saat papan mengurangi poin tersebut dari kesehatan lawan Anda. Kemudian, berikan kepada temanmu, dan

Langkah 3: FSM

Game ini pada dasarnya adalah satu mesin keadaan terbatas yang besar, di mana beberapa logika kompleks terjadi berdasarkan keadaan tempat FSM berada.

(Diagram Negara Bagian)

Status 1: Menu

Status pertama adalah layar menu, yang merupakan salah satu status yang lebih sederhana. Ini termasuk tampilan tujuh segmen yang menampilkan kata "MAINKAN", dan tombol yang menyebabkan permainan dimulai. Tombolnya, BTN, membawa kita ke keadaan berikutnya, yaitu giliran pemain.

Status 2: Giliran Pemain Satu

Giliran pemain satu mengaktifkan sinyal yang menyebabkan tampilan tujuh segmen menampilkan kesehatan Pemain dua. Sinyal lain menyala untuk mengaktifkan register geser yang diimpor dari modul lain yang kita buat (Pone.vhd). Register geser ini membuat LED menyala seperti pengukur daya yang meningkat di game lain, dan kemudian akan diatur ulang ke 0 ketika mencapai jumlah maksimum LED yang bisa menyala. Ini diperbarui di tepi naik jam yang diperoleh dari barclock.vhd, yang dimodifikasi dari file lab yang dipinjam. Kami memiliki bilah pemain mulai dari kanan, dan mengisi ke kiri, karena sakelar pemain juga ada di kiri (untuk pengalaman pengguna yang intuitif). Setelah sakelar dibalik, status beralih ke pemain satu pengurangan, dan jumlah LED aktif disimpan dalam sinyal.

Negara 3: Pemain Satu dikurangi

Sinyal dengan jumlah LED yang aktif menentukan jumlah kesehatan yang dikurangi. Ini dilakukan dengan memiliki register geser lain (deductor1.vhd) yang alih-alih menaikkan LED, menguranginya. Ini mengurangi sisi naik dari salah satu modul div jam yang kami pinjam dan modifikasi (downcounterclock.vhd). Tepat saat satu LED dimatikan, satu poin kesehatan dikurangi dari total kesehatan pemain dua. Jika selama proses ini pemain dua mencapai 0, kami berhenti dan segera beralih ke status "Game over". Jika tidak, setelah vektor LED mencapai "0000000000000000", kami beralih ke giliran pemain dua.

Status 4: Giliran Pemain Dua

Giliran pemain dua persis seperti giliran pemain satu, kecuali register geser untuk itu (Ptwo.bhd) bergerak dari kiri ke kanan, dan sakelar ada di sisi kanan papan. Sinyal diaktifkan untuk menampilkan tampilan kesehatan Pemain 1. Setelah sakelar 2 aktif, ini beralih ke giliran pengurangan Pemain Dua.

Tahap 5: Pemain Dua Dikurangi

Sama seperti giliran pemain dua, pemain dua pengurangan sangat mirip dengan pemain satu. Perbedaan utama adalah bahwa register geser yang mengontrol pematian LED berjalan ke arah yang berlawanan, yang merupakan modifikasi mudah untuk dilakukan setelah Anda membuat pengurangan pemain bekerja dengan benar.

Tahap 6: Game Over Jika pada suatu saat salah satu pemain mencapai kesehatan nol, game beralih ke status ini. Tidak ada tampilan yang mewah. Jika BTN satu ditekan, maka kesehatan diatur ulang ke 99, dan status kembali ke menu, secara efektif memulai permainan.

Kotak hitam

Langkah 4: Modul

Downcounterclock (berdasarkan modul clk_div.vhd oleh Bryan Mealy):

Ini adalah jam yang menangani waktu pengurang. Konstanta bernama max_count 3x lebih banyak dari konstanta max_count barclock. Ini akan membuat deduktor 3x lebih lambat dari kecepatan bar.

Barclock - (berdasarkan modul clk_div.vhd oleh Bryan Mealy): Jam ini menangani waktu pengukur daya, yang kami buat dengan cepat untuk menambah kesulitan permainan. Pengaturan waktu ini dapat disesuaikan dengan keinginan Anda, meningkatkan kecepatan dengan membuat konstanta max_count menjadi angka yang lebih besar, atau menguranginya dengan membuat max_count menjadi angka yang lebih kecil. Sseg_dec - (Ditulis oleh Bryan Mealy): Modul ini mengambil angka 8 bit sebagai input, yang didekodekannya, mengubah angka menjadi ekuivalen desimalnya, dan kemudian mengeluarkannya ke tampilan tujuh segmen. Agar file ini berfungsi, Anda perlu memastikan batasan Anda cocok dengan batasan kami.

Pone: Ini adalah register geser yang menggeser bit ke kiri, menambahkan satu bit panas agar terlihat seperti pengukur daya meningkat. Ketika semua bit panas, semua bit diatur ulang ke '0', dan siklus dimulai kembali.

Pdua: Ini adalah versi terbalik dari modul P1.

Deductor1: Ini adalah kombinasi dari register geser dan subtractor. Register geser bergerak ke arah yang berlawanan dengan register geser P1, menunjukkan pengurangan. Ini juga mengurangi 1 dari kesehatan Pemain 2 untuk setiap siklus jam, jadi dengan kombinasi kedua fungsi ini, akan terlihat seperti kesehatan lawan berkurang 1 untuk setiap led dari bilah kesehatan yang turun.

Deductor2: Ini adalah versi terbalik dari modul Deductor1.

PlayDecoder (dipinjam dan sedikit dimodifikasi dari ekchen35649 instruksinya 133):

Ini digunakan dalam status menu untuk menampilkan kata "MAINKAN" pada dekoder tujuh segmen.

Yang Harus Dilakukan: gambar, video

Direkomendasikan: