Kazalo:

Minolovac: 5 korakov (s slikami)
Minolovac: 5 korakov (s slikami)

Video: Minolovac: 5 korakov (s slikami)

Video: Minolovac: 5 korakov (s slikami)
Video: СУПЕР СМЕШНАЯ КОМЕДИЯ! "Как Извести Любовницу За 7 Дней" РУССКИЕ КОМЕДИИ НОВИНКИ, ФИЛЬМЫ HD, КИНО 2024, November
Anonim
Minolovac
Minolovac

Za naš končni projekt CPE 133 sva se s Chaseom odločila ustvariti igro "Minolovac", ki je uporabljala gumb in preklapljala vnos z deske Basys-3 ter kode VHDL. Boljše ime za igro bi lahko bilo "ruska ruleta", vendar smo si želeli družine prijaznejšega imena. Igra vključuje uporabnika, da pritisne srednji gumb na plošči Basys, da naključno dodeli eno od 16 stikal za "aktivno" z bombo. Dva igralca nato izmenično dvigata stikala, eno za drugim, dokler eden od igralcev ne pritisne stikala s "bombo". Ko se to zgodi, zaslon s sedmimi segmenti opozori igralce, da je pravkar izgubil igro.

1. korak: Pregled

V projektu so bili uporabljeni številni moduli VHDL, ki smo jih uporabili v tem četrtletju. Štiri bitni števec je bil uporabljen skupaj z robom ure za simulacijo naključnega štiri bitnega števila za aktiviranje enega od stikal. Diagram stanja je bil uporabljen tudi za prikaz različnih besed na zaslonu sedmih segmentov, od "PLAY", ko so igralci sredi igre, do "LOSE", ko je eden od igralcev prestavil aktivno stikalo.

2. korak: Materiali

  • Razvojni odbor Basys3 podjetja Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (Ta datoteka nam je bila posredovana na Polylearnu, napisal pa jo je Bryan Mealy)
  • 4 -bitni števec iz T japonk
  • FSM

3. korak: Ustvarjanje igre

Ustvarjanje igre
Ustvarjanje igre
Ustvarjanje igre
Ustvarjanje igre

Prvi korak k izdelavi te igre je bil risanje vezja z vsemi komponentami, ki jih bomo uporabljali. Vhodi za ta sistem so bili gumb 1, 16 stikal in ura. Izhodi so bili zaslon s sedmimi segmenti in anode. Po risanju sheme vezja smo za vsako komponento v Vivadu napisali posamezne izvorne datoteke in jih združili z zemljevidi vrat pod glavno izvorno datoteko.

Celotna osnova igre se vrti okoli naključnega dodelitve enega od 16 stikal za aktiviranje z bombo in za igralce, da ne vedo, katero stikalo je aktivno, dokler se to aktivno stikalo ne vklopi. Na spletu smo iskali generatorje naključnih in psevdonaključnih števil, vendar smo se na koncu odločili, da je uporaba 4-bitnega števca in dodelitev ustreznega stikala aktivnemu dovolj naključna za tisto, kar smo iskali. Naš 4-bitni števec, ki smo ga ustvarili v prejšnjem projektu, smo lahko preuredili, da smo lahko delali za to nalogo. S števcem smo ustvarili naključno število med 0-15; nato smo v komponenti main1 dodelili decimalni ekvivalent naključnega števila njegovemu ustreznemu stikalu na plošči. Kot je prikazano na shemi, tako izhod X ("aktivna bomba") iz komponente main1 kot stikala, ki jih vklopijo igralci, preidejo na FSM1. Stanje stroj odda eno bitno vrednost Z, ki jo nato prebere BC_DEC1. Stroj končnega stanja, ki smo ga uporabili, ima dve različni stanji: v stanju A iz sedmih segmentnih prikazovalnikov izstopi "PLAY" in naprava ostane v tem stanju, dokler ne prepozna, da je aktivirano stikalo obrnjeno. Ko se to zgodi, FSM preide v stanje B, kjer odda "LOSE" na sedemsegmentni zaslon in ostane v tem stanju, dokler se vseh 16 stikal ne premakne na "0". Ko je ta pogoj izpolnjen, FSM ponovno preide v stanje A in čaka na igralce, da začnejo drugo igro. Moorejev diagram, ki pomaga razumeti ta FSM, je prikazan zgoraj.

4. korak: Prihodnje spremembe

Nekaj sprememb, ki smo jih razmišljali o svoji igri, vključuje dodajanje več bomb na polje (po možnosti z enega na tri), dodajanje števca točk in več krogov. Na koncu smo se odločili proti tem izboljšavam, saj smo ugotovili, da je igranje daljše, podaljšane igre običajno bolj napeto in na koncu bolj zabavno kot igra, ki se običajno konča po treh ali štirih preklopih stikal.

5. korak: Zaključek

S končnim rezultatom tega projekta smo bili zelo zadovoljni; ne samo zato, ker je bilo končno različico igre zabavno igrati, ampak tudi zato, ker smo pri ustvarjanju in programiranju projekta morali uporabiti največ, če ne celo vse, kar smo se naučili v tem četrtletju. Uporabili smo japonke, števce, FSM -je, uro, uporabniški vnos s plošče in izhod na sedem segmentni zaslon.

Izvedeli smo tudi, kako bi lahko nekaj sintaktičnih napak popolnoma prekinilo program (tudi če bi se v drugih programskih jezikih, kot sta Python ali Java, zdelo dobro) in to šele po več simulacijah in večkratnih ponovitvah kode, ki so bile naložene in preizkušene na board, ali boste končno lahko odpravili vse hrošče iz svoje kode.

Priporočena: