Isi kandungan:
Video: Permainan Pemain VS Kompetitif 2 Masa: 4 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Anda perlu:
1. Digilent Basys 3, FPGA Board (atau FPGA lain,)
2. Versi Vivado yang agak terkini, atau persekitaran VHDL lain
3. Komputer yang dapat menjalankan program yang disebutkan.
Langkah 1: Permainan Sendiri
Bagaimana FSM berinteraksi dengan modul.
Cara bermain
Untuk memulakan, anda menekan butang tengah. Ini akan menyebabkan "99", yang menunjukkan kesihatan pemain dua, untuk dipaparkan pada paparan tujuh segmen. Kemudian, LED akan menyala secara berurutan dari kanan ke kiri. Ini membentuk bar kuasa. Setelah bar kuasa penuh, ia akan ditetapkan semula. Objek pemain adalah untuk menukar suis mereka apabila palang setinggi mungkin. Semakin banyak lampu LED menyala, semakin banyak kerosakan pemain yang dilakukan oleh pemain dua. Setelah pemain mengundurkan suisnya, kerosakan yang ditanggung dikurangkan dari kesihatan pemain dua. Kemudian, ia beralih ke giliran pemain dua. Sekarang, nombor yang ditunjukkan mewakili kesihatan pemain, dan power bar mengisi dari kiri ke kanan. Setelah pemain dua bergerak, kerosakan akan ditolak, dan gilirannya kembali kepada pemain. Ini berulang sehingga satu pemain mencapai 0 kesihatan. Video mengenai fungsi ini dilampirkan.
Langkah 2: FSM
Permainan ini pada dasarnya adalah satu mesin keadaan terhingga besar, yang logik kompleks berlaku berdasarkan keadaan di mana FSM berada.
Nyatakan 1: Menu Keadaan pertama adalah skrin menu, yang merupakan salah satu keadaan yang lebih sederhana. Ini termasuk tampilan tujuh segmen yang menampilkan kata "MAIN", dan tombol yang menyebabkan permainan dimulakan. Butang, BTN, membawa kita ke keadaan seterusnya, iaitu giliran pemain satu.
Nyatakan 2: Giliran Pemain Satu
Giliran pemain satu mengaktifkan isyarat yang menyebabkan paparan tujuh segmen menunjukkan kesihatan Pemain dua. Isyarat lain menyala untuk mengaktifkan shift shift yang diimport dari modul lain yang kami buat (Pone.vhd). Daftar pergeseran ini menjadikan lampu LED menyala seperti pengukur daya yang meningkat pada permainan lain, dan kemudian akan diset semula ke 0 ketika mencapai jumlah maksimum LED yang dapat menyala. Ia mengemas kini bahagian tepi jam yang diperoleh dari barclock.vhd, yang diubah suai dari fail makmal yang dipinjam. Kami mempunyai bar pemain satu bermula dari kanan, dan mengisi ke kiri, kerana suis pemain satu juga berada di sebelah kiri (untuk pengalaman pengguna yang intuitif). Setelah suis dibalik, keadaan beralih ke pemain satu tolak, dan jumlah aktif LED disimpan dalam isyarat.
Nyatakan 3: Pemotongan Pemain Satu Isyarat dengan jumlah aktif LED menentukan jumlah kesihatan yang mendapat potongan. Ini dilakukan dengan mempunyai register pergeseran lain (deductor1.vhd) yang daripada menambah LED, mengurangkannya. Ini penurunan pada sisi naik salah satu modul div jam yang kami pinjam dan ubah suai (downcounterclock.vhd). Sebaik sahaja satu LED dimatikan, satu titik kesihatan dipotong dari keseluruhan kesihatan pemain dua. Sekiranya selama proses ini dua pemain mencapai 0 kesihatan, kita berhenti dan segera beralih ke keadaan "Game over". Jika tidak, apabila vektor LED mencapai "0000000000000000", kita beralih ke giliran pemain dua.
Nyatakan 4: Giliran Pemain Dua Giliran pemain dua sama seperti giliran pemain satu, kecuali daftar geser untuknya (Ptwo.bhd) bergerak dari kiri ke kanan, dan suis berada di sebelah kanan papan. Isyarat diaktifkan untuk memaparkan paparan kesihatan Pemain 1. Setelah suis 2 aktif, ini beralih ke giliran pemotongan Pemain Dua.
Tahap 5: Pemotongan Pemain Dua Sama seperti giliran pemain dua, pemotongan pemain dua sama seperti pemotongan pemain satu. Perbezaan utama adalah bahawa daftar pergeseran yang mengawal pemadaman LED pergi ke arah yang bertentangan, yang merupakan pengubahsuaian mudah untuk dilakukan setelah anda memotong pemain yang berfungsi dengan baik.
Tahap 6: Permainan Berakhir Sekiranya pada tahap mana-mana pemain mencapai tahap kesihatan yang sifar, permainan beralih ke keadaan ini. Tiada paparan mewah. Sekiranya BTN ditekan, maka kesihatannya diset semula ke 99, dan keadaan kembali ke menu, dengan berkesan memulakan permainan.
Langkah 3: Modul
Rajah Kotak Hitam untuk Permainan
Downcounterclock (berdasarkan modul clk_div.vhd oleh Bryan Mealy):
Ini adalah jam yang menangani masa pemotong. Pemalar bernama max_count 3x lebih banyak daripada pemalar max_count barclock. Ini akan menjadikan pemotong 3x lebih perlahan daripada kelajuan palang.
Barclock - (berdasarkan modul clk_div.vhd oleh Bryan Mealy):
Jam ini menangani masa pengukur daya, yang kami buat dengan cepat untuk menambahkan kesukaran pada permainan. Waktu ini dapat disesuaikan dengan keinginan anda, meningkatkan kecepatan dengan menjadikan jumlah maksimum_ jumlah tetap menjadi lebih besar, atau menurunkannya dengan membuat jumlah_paksimum menjadi bilangan yang lebih kecil. Sseg_dec - (Ditulis oleh Bryan Mealy): Modul ini mengambil nombor 8 bit sebagai input, yang disahkodkan, menukar nombor menjadi setara perpuluhannya, dan kemudian output ke paparan tujuh segmen. Agar fail ini berfungsi, anda perlu memastikan kekangan anda sesuai dengan masalah kami.
Pone:
Ini adalah daftar pergeseran yang menggeser bit ke kiri, menambahkan satu bit panas untuk membuatnya kelihatan seperti tolok kuasa yang semakin meningkat. Apabila semua bit panas, semua bit diset semula ke ‘0’, dan kitaran bermula semula.
Ptwo:
Ini adalah versi terbalik dari modul P1.
Deduktor1:
Ini adalah gabungan dari register shift dan subtraktor. Register shift bergerak ke arah yang berlawanan dari register shift P1, yang menunjukkan pemotongan. Ini juga mengurangkan 1 dari kesihatan Pemain 2 untuk setiap pusingan jam, jadi dengan kombinasi kedua fungsi ini, kesihatan lawan akan kelihatan seperti penurunan 1 untuk setiap bar bar kesihatan yang turun.
Deductor2: Ini adalah versi fledped dari modul Deductor1.
PlayDecoder (dipinjam dan dimodifikasi secara perlahan dari ekchen35649 arahannya 133): Ini digunakan dalam keadaan menu untuk memaparkan perkataan "MAIN" pada penyahkod tujuh segmen.
Langkah 4: Uji
Permainan ini pada mulanya diilhamkan oleh salah satu permainan mini dari Kirby. Ini adalah permainan dua pemain sederhana yang boleh dimainkan di Papan Basys 3, atau FPGA mana pun.
Langkah 1: Bahan yang Diperlukan
Anda akan memerlukan: Digilent Basys 3, FPGA Board (atau yang lain) Versi Vivado yang agak terkini, atau persekitaran vhdl lain Komputer yang dapat menjalankan program yang disebutkan Otak
Langkah 2: Permainan Sendiri
Cara bermain
Untuk memulakan, anda menekan butang tengah. Ini akan menyebabkan "99", yang menunjukkan kesihatan pemain dua, untuk dipaparkan pada paparan tujuh segmen. Kemudian, LED akan menyala secara berurutan dari kanan ke kiri. Ini membentuk bar kuasa. Setelah bar kuasa penuh, ia akan ditetapkan semula. Objek pemain adalah untuk menukar suis mereka apabila palang setinggi mungkin. Semakin banyak LED menyala, semakin banyak kerosakan pemain yang dilakukan oleh pemain dua. Setelah pemain mengundurkan suisnya, kerosakan yang ditanggung dikurangkan dari kesihatan pemain dua. Kemudian, ia beralih ke giliran pemain dua. Sekarang, nombor yang ditunjukkan mewakili kesihatan pemain, dan bar kuasa mengisi dari kiri ke kanan. Setelah pemain dua bergerak, kerosakan akan ditolak, dan gilirannya kembali kepada pemain. Ini berulang sehingga satu pemain mencapai 0 kesihatan. Video mengenai fungsi ini dilampirkan.
Untuk bermain permainan, muatkan di papan basys, dan tekan butang tengah. Cuba putar suis dengan seberapa banyak LED yang aktif, dan kemudian tunggu dan perhatikan ketika papan memotong mata tersebut dari kesihatan lawan anda. Kemudian, serahkan kepada rakan anda, dan
Langkah 3: FSM
Permainan ini pada dasarnya adalah satu mesin keadaan terhingga besar, yang logik kompleks berlaku berdasarkan keadaan di mana FSM berada.
(Gambarajah Negeri)
Nyatakan 1: Menu
Keadaan pertama adalah skrin menu, yang merupakan salah satu keadaan yang lebih sederhana. Ini termasuk tampilan tujuh segmen yang menampilkan kata "MAIN", dan tombol yang menyebabkan permainan dimulakan. Butang, BTN, membawa kita ke keadaan seterusnya, iaitu giliran pemain satu.
Nyatakan 2: Giliran Pemain Satu
Giliran pemain satu mengaktifkan isyarat yang menyebabkan paparan tujuh segmen menunjukkan kesihatan Pemain dua. Isyarat lain menyala untuk mengaktifkan shift shift yang diimport dari modul lain yang kami buat (Pone.vhd). Daftar pergeseran ini menjadikan lampu LED menyala seperti pengukur daya yang meningkat pada permainan lain, dan kemudian akan diset semula ke 0 ketika mencapai jumlah maksimum LED yang dapat menyala. Ia mengemas kini bahagian tepi jam yang diperoleh dari barclock.vhd, yang diubah suai dari fail makmal yang dipinjam. Kami mempunyai bar pemain satu bermula dari kanan, dan mengisi ke kiri, kerana suis pemain satu juga berada di sebelah kiri (untuk pengalaman pengguna yang intuitif). Setelah suis dibalik, keadaan beralih ke pemain satu tolak, dan jumlah aktif LED disimpan dalam isyarat.
Nyatakan 3: Pemotongan Pemain Satu
Isyarat dengan jumlah aktif LED menentukan jumlah kesihatan yang dikurangkan. Ini dilakukan dengan mempunyai register pergeseran lain (deductor1.vhd) yang daripada menambah LED, mengurangkannya. Ini penurunan pada kelebihan salah satu modul div jam yang kami pinjam dan ubah suai (downcounterclock.vhd). Sebaik sahaja satu LED dimatikan, satu titik kesihatan dipotong dari keseluruhan kesihatan pemain dua. Sekiranya selama proses ini dua pemain mencapai 0 kesihatan, kita berhenti dan segera beralih ke keadaan "Game over". Jika tidak, apabila vektor LED mencapai "0000000000000000", kita beralih ke giliran pemain dua.
Nyatakan 4: Giliran Pemain Dua
Giliran pemain dua sama seperti giliran pemain satu, kecuali daftar geser untuknya (Ptwo.bhd) bergerak dari kiri ke kanan, dan suis berada di sebelah kanan papan. Isyarat diaktifkan untuk memaparkan paparan kesihatan Pemain 1. Setelah suis 2 aktif, ini beralih ke giliran pemotongan Pemain Dua.
Tahap 5: Potongan Pemain Dua
Sama seperti giliran pemain dua, pemotongan pemain dua bertindak seperti pemotongan pemain satu. Perbezaan utama adalah bahawa daftar pergeseran yang mengawal pemadaman LED pergi ke arah yang bertentangan, yang merupakan pengubahsuaian mudah untuk dilakukan setelah anda memotong pemain yang berfungsi dengan baik.
Tahap 6: Permainan Berakhir Sekiranya pada tahap mana-mana pemain mencapai tahap kesihatan yang sifar, permainan beralih ke keadaan ini. Tiada paparan mewah. Sekiranya BTN ditekan, maka keadaan kesihatan ditetapkan semula ke 99, dan keadaan kembali ke menu, dengan berkesan memulakan permainan.
Kotak hitam
Langkah 4: Modul
Downcounterclock (berdasarkan modul clk_div.vhd oleh Bryan Mealy):
Ini adalah jam yang menangani masa pemotong. Pemalar bernama max_count 3x lebih banyak daripada pemalar max_count barclock. Ini akan menjadikan pemotong 3x lebih perlahan daripada kelajuan palang.
Barclock - (berdasarkan modul clk_div.vhd oleh Bryan Mealy): Jam ini menangani masa pengukur daya, yang kami buat dengan cepat untuk menambah kesukaran pada permainan. Waktu ini dapat disesuaikan dengan keinginan anda, meningkatkan kecepatan dengan menjadikan jumlah maksimum_ jumlah tetap menjadi lebih besar, atau menurunkannya dengan membuat jumlah_paksimum menjadi bilangan yang lebih kecil. Sseg_dec - (Ditulis oleh Bryan Mealy): Modul ini mengambil nombor 8 bit sebagai input, yang disahkodkan, menukar nombor menjadi setara perpuluhannya, dan kemudian output ke paparan tujuh segmen. Agar fail ini berfungsi, anda perlu memastikan kekangan anda sesuai dengan masalah kami.
Pone: Ini adalah register shift yang menggeser bit ke kiri, menambahkan satu bit panas untuk membuatnya kelihatan seperti tolok kuasa yang semakin meningkat. Apabila semua bit panas, semua bit diset semula ke ‘0’, dan kitaran bermula semula.
Ptwo: Ini adalah versi terbalik dari modul P1.
Deductor1: Ini adalah gabungan dari register shift dan subtraktor. Register shift bergerak ke arah yang berlawanan dari register shift P1, yang menunjukkan pemotongan. Ini juga mengurangkan 1 dari tahap kesihatan Pemain 2 untuk setiap pusingan jam, jadi dengan kombinasi kedua fungsi ini, kesihatan lawan akan kelihatan seperti penurunan 1 untuk setiap petunjuk bar kesihatan yang turun.
Deductor2: Ini adalah versi fledped dari modul Deductor1.
PlayDecoder (dipinjam dan sedikit diubah dari ekchen35649 133 arahannya):
Ini digunakan dalam keadaan menu untuk menampilkan kata "MAIN" pada penyahkod tujuh segmen.
Yang Perlu Dilakukan: gambar, video
Disyorkan:
Cara Membuat Pemain MP3 Dengan LCD Menggunakan Modul Pemain MP3 Arduino dan DFPlayer Mini: 6 Langkah
Cara Membuat Pemain MP3 Dengan LCD Menggunakan Modul Pemain MP3 Arduino dan DFPlayer Mini: Hari ini kita akan membuat pemain MP3 dengan LCD menggunakan Modul Pemain MP3 mini Arduino dan DFPlayer. Projek ini dapat membaca fail MP3 dalam kad SD, dan dapat menjeda dan mainkan sama dengan peranti 10 tahun yang lalu. Dan juga mempunyai lagu sebelumnya dan keseronokan lagu seterusnya
Sistem Buzzer Kompetitif: 5 Langkah
Sistem Buzzer Kompetitif: Sistem buzzer kompetitif yang dirancang dalam projek ini beroperasi sama dengan sistem bel yang digunakan dalam Pertandingan Mangkuk Sains Wilayah dan Nasional. Projek ini diilhamkan oleh penglibatan saya dengan pasukan sains sekolah menengah saya untuk
2-4 Pemain Pemain dan Main Arked Raspberry Pi: 11 Langkah
2-4 Pemain Pemain dan Mainkan Raspberry Pi Arcade: Pasangkan dan mainkan, bukan hanya istilah untuk konsol permainan plastik yang anda beli di Walmart tempatan anda. Kabinet arked plug and play ini berfungsi, dikuasakan oleh Raspberry Pi 3 yang menjalankan Retropie, mesin ini menawarkan kemampuan penyesuaian penuh dan
Sambungkan Pemain MP3 ke Pemain Pita: 6 Langkah (dengan Gambar)
Sambungkan Pemain MP3 ke Pemain Pita: Cara menyambungkan pemain mp3, atau sumber stereo lain, ke pemain pita untuk mendengarkan muzik
Pemain Kaset Pemain Amp: 3 Langkah
Pemain Kaset Pemain Kaset: Dengan beberapa inspirasi yang diperoleh daripada projek lain yang serupa yang dipaparkan di Internet, saya menukar pemain / perakam kaset Sony Walkman menjadi penguat gitar yang menggunakan 2 bateri AA