Satura rādītājs:

Mīnu kuģis: 5 soļi (ar attēliem)
Mīnu kuģis: 5 soļi (ar attēliem)

Video: Mīnu kuģis: 5 soļi (ar attēliem)

Video: Mīnu kuģis: 5 soļi (ar attēliem)
Video: NEIZŅEMIET akumulatoru no automašīnas. Dari to PAREIZI! 2024, Jūlijs
Anonim
Mīnu kuģis
Mīnu kuģis

Mūsu CPE 133 galīgajā projektā Čeiss un es nolēmām izveidot spēli “Minesweeper”, kurā tika izmantota poga un slēdzis no Basys-3 plates, kā arī VHDL kods. Labāks spēles nosaukums varētu būt “krievu rulete”, tomēr mēs gribējām izvēlēties ģimenei draudzīgāku nosaukumu. Spēle ietver lietotājam nospiest Basys dēļa vidējo pogu, lai nejauši piešķirtu vienu no 16 slēdžiem, lai tie būtu “aktīvi” ar bumbu. Pēc tam divi spēlētāji pēc kārtas pagriež slēdžus pa vienam, līdz viens no spēlētājiem pagriež slēdzi ar “bumbu”. Kad tas notiek, septiņu segmentu displejs brīdina spēlētājus, ka šis spēlētājs tikko ir zaudējis spēli.

1. darbība. Pārskats

Projektā tika izmantoti daudzi VHDL moduļi, kurus esam izmantojuši šī ceturkšņa laikā. Kopā ar pulksteņa malu tika izmantots četru bitu skaitītājs, lai simulētu nejaušu četru bitu skaitli, lai aktivizētu vienu no slēdžiem. Tika izmantota arī stāvokļa diagramma, lai septiņu segmentu displejā izvadītu dažādus vārdus, sākot no “PLAY”, kad spēlētāji atrodas spēles vidū, līdz “LOSE”, kad kāds no spēlētājiem ir pagriezis aktīvo slēdzi.

2. solis: materiāli

  • Basys3 attīstības padome no Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (Šis fails mums tika nodrošināts vietnē Polylearn, un to uzrakstīja Braiens Mīlijs)
  • 4 bitu skaitītājs, kas izgatavots no T flip flops
  • MFV

3. solis: spēles izveidošana

Spēles veidošana
Spēles veidošana
Spēles veidošana
Spēles veidošana

Pirmais solis šīs spēles veidošanā bija shēmas shēmas zīmēšana ar visiem komponentiem, kurus mēs izmantosim. Šīs sistēmas ievadi bija poga 1, 16 slēdži un pulkstenis. Rezultāti bija septiņu segmentu displejs un anodi. Pēc shēmas zīmēšanas mēs uzrakstījām atsevišķus avota failus katram komponentam Vivado un salikām tos kopā, izmantojot portu kartes zem galvenā avota faila.

Visa spēles pamatā ir nejauša viena no 16 slēdžiem piešķiršana aktīvai ar bumbu un lai spēlētāji nezina, kurš slēdzis ir aktīvs, kamēr šis aktīvais slēdzis nav ieslēgts. Mēs tiešsaistē izpētījām nejaušu un pseidogadījumu skaitļu ģeneratorus, taču galu galā nolēmām, ka 4 bitu skaitītāja izmantošana un attiecīgā slēdža piešķiršana aktīvai ir pietiekami nejauša, lai to, ko meklējām. Mēs varējām atkārtoti izmantot mūsu 4 bitu skaitītāju, ko izveidojām iepriekšējā projektā, lai varētu strādāt ar šo uzdevumu. Mēs izmantojām skaitītāju, lai izveidotu nejaušu skaitli starp 0-15; tad galvenajā komponentā mēs piešķīrām nejaušā skaitļa decimālo ekvivalentu tā atbilstošajam slēdzim uz tāfeles. Kā redzams shēmā, gan izeja X (“aktīvā bumba”) no galvenā komponenta, gan spēlētāju ieslēgtie slēdži pāriet uz FSM1. Stāvokļa mašīna izvada viena bita Z vērtību, kuru pēc tam nolasa BC_DEC1. Mūsu izmantotajai ierobežota stāvokļa mašīnai ir divi dažādi stāvokļi: A stāvoklī septiņu segmentu displejs izvada “PLAY”, un iekārta paliek šajā stāvoklī, līdz tā atpazīst aktivizēto slēdzi. Kad tas notiek, MFV pāriet stāvoklī B, kur septiņu segmentu displejā izvada “LOSE” un paliek šajā stāvoklī, līdz visi 16 slēdži tiek pārvērsti uz “0”. Kad šis nosacījums ir izpildīts, MFV atkal pāriet uz stāvokli A un gaida, kad spēlētāji sāks citu spēli. Mūra diagramma, kas palīdz izprast šo MFV, ir parādīta iepriekš.

4. solis: turpmākās izmaiņas

Dažas izmaiņas, kuras mēs apsvērām, lai veiktu mūsu spēli, ietver vairāk bumbu pievienošanu laukam (iespējams, palielinot no viena līdz trim), pievienojot rezultātu skaitītāju un vairākas kārtas. Mēs galu galā nolēmām pret šiem uzlabojumiem, jo atklājām, ka garāku, pagarinātu spēli spēlēt parasti bija saspringtāk un galu galā jautrāk nekā spēli, kas parasti beidzās pēc trim vai četriem slēdžiem.

5. darbība. Secinājums

Mēs bijām ļoti apmierināti ar šī projekta gala rezultātu; ne tikai tāpēc, ka spēles galīgo versiju bija jautri spēlēt, bet arī tāpēc, ka projekta izveidei un programmēšanai bija jāizmanto lielākā daļa, ja ne viss, ko mēs uzzinājām šajā ceturksnī. Mēs izmantojām flip flops, skaitītājus, FSM, pulksteni, lietotāja ievadi no tāfeles un izvadi septiņu segmentu displejā.

Mēs arī uzzinājām, kā dažas sintakses kļūdas var pilnībā izjaukt programmu (pat ja tās tiktu uzskatītas par labām citās programmēšanas valodās, piemēram, Python vai Java) un ka tikai pēc vairākām simulācijām un vairākām koda iterācijām, kas augšupielādētas un pārbaudītas vietnē kuģa, vai jūs beidzot varēsit novērst visas kļūdas no sava koda.

Ieteicams: