Turinys:

Minosvaidis: 5 žingsniai (su nuotraukomis)
Minosvaidis: 5 žingsniai (su nuotraukomis)

Video: Minosvaidis: 5 žingsniai (su nuotraukomis)

Video: Minosvaidis: 5 žingsniai (su nuotraukomis)
Video: Removing Mortar Between Bricks with Morta Sortas 2024, Lapkritis
Anonim
Minų ieškiklis
Minų ieškiklis

Galutiniam mūsų CPE 133 projektui Chase'as ir aš nusprendėme sukurti žaidimą „Minosvaidis“, kuriame būtų naudojami mygtukai ir jungikliai iš „Basys-3“plokštės bei VHDL kodas. Geresnis žaidimo pavadinimas galėtų būti „rusiška ruletė“, tačiau norėjome pasirinkti labiau šeimai tinkamą pavadinimą. Žaidime vartotojas turi paspausti vidurinį „Basys“lentos mygtuką, kad atsitiktine tvarka priskirtų vieną iš 16 jungiklių „aktyvų“su bomba. Tada du žaidėjai pakaitomis varto jungiklius po vieną, kol vienas iš žaidėjų apsuka jungiklį su „bomba“. Kai tai atsitiks, septynių segmentų ekranas įspėja žaidėjus, kad tas žaidėjas ką tik pralaimėjo žaidimą.

1 žingsnis: apžvalga

Projekte buvo panaudota daug VHDL modulių, kuriuos panaudojome per šį ketvirtį. Kartu su laikrodžio kraštu buvo naudojamas keturių bitų skaitiklis, kad būtų galima imituoti atsitiktinį keturių bitų skaičių ir suaktyvinti vieną iš jungiklių. Būsenos diagrama taip pat buvo naudojama norint išvesti skirtingus žodžius į septynių segmentų ekraną, pradedant „PLAY“, kai žaidėjai yra žaidimo viduryje, ir baigiant „LOSE“, kai vienas iš žaidėjų pasuko aktyvų jungiklį.

2 žingsnis: medžiagos

  • „Basys3“plėtros valdyba iš „Digilent, Inc.
  • „Vivado Design Suite BC_DEC.vhd“(šis failas mums buvo pateiktas „Polylearn“ir parašė Bryanas Mealy)
  • 4 bitų skaitiklis, pagamintas iš T šlepečių
  • MFV

3 žingsnis: sukurkite žaidimą

Žaidimo kūrimas
Žaidimo kūrimas
Žaidimo kūrimas
Žaidimo kūrimas

Pirmasis žingsnis kuriant šį žaidimą buvo schemos schema su visais komponentais, kuriuos naudosime. Šios sistemos įvestys buvo mygtukas 1, 16 jungiklių ir laikrodis. Išėjimai buvo septynių segmentų ekranas ir anodai. Nubraižę schemą, mes parašėme atskirus kiekvieno „Vivado“komponento šaltinio failus ir sudėjome juos naudodami pagrindinio šaltinio failo prievadų žemėlapius.

Visas žaidimo pagrindas yra atsitiktinis priskyrimas vienam iš 16 jungiklių, kad jis būtų aktyvus su bomba, ir kad žaidėjai nežinotų, kuris jungiklis yra aktyvus, kol šis aktyvus jungiklis nebus įjungtas. Mes ieškojome atsitiktinių ir pseudo atsitiktinių skaičių generatorių internete, tačiau galiausiai nusprendėme, kad 4 bitų skaitiklio naudojimas ir atitinkamo jungiklio priskyrimas aktyviam yra pakankamai atsitiktinis tam, ko ieškojome. Mes galėjome iš naujo panaudoti 4 bitų skaitiklį, kurį sukūrėme ankstesniame projekte, kad galėtume dirbti su šia užduotimi. Mes naudojome skaitiklį, kad sukurtume atsitiktinį skaičių nuo 0 iki 15; tada pagrindiniame komponente mes priskyrėme atsitiktinio skaičiaus dešimtainį atitikmenį atitinkamam jungikliui lentoje. Kaip matyti schemoje, išėjimas X („aktyvi bomba“) iš pagrindinio komponento ir jungikliai, kuriuos žaidėjai įjungia, pereina prie FSM1. Būsenos mašina išleidžia vieno bitų Z reikšmę, kurią tada skaito BC_DEC1. Mūsų naudota baigtinės būsenos mašina turi dvi skirtingas būsenas: A būsenoje septynių segmentų ekranas išleidžia „PLAY“ir aparatas lieka toje būsenoje, kol atpažįsta, kad aktyvuotas jungiklis yra pasuktas. Kai tai atsitiks, FSM pereina į B būseną, kur septynių segmentų ekrane pateikia „LOSE“ir išlieka toje būsenoje, kol visi 16 jungiklių bus perkelti į „0“. Kai ši sąlyga įvykdyta, MFV vėl pereina į A būseną ir laukia, kol žaidėjai pradės kitą žaidimą. Mūro diagrama, padedanti suprasti šį FSM, parodyta aukščiau.

4 žingsnis: būsimi pakeitimai

Keletas pakeitimų, kuriuos mes svarstėme atlikti savo žaidime, yra pridėti daugiau bombų į lauką (galbūt padidinti nuo vieno iki trijų), pridėti rezultatų skaitiklį ir kelis raundus. Galiausiai nusprendėme prieš šiuos patobulinimus, nes nustatėme, kad žaisti ilgesnį, pratęstą žaidimą paprastai būdavo labiau įtempta ir galiausiai smagiau nei žaidimą, kuris paprastai baigdavosi po trijų ar keturių perjungimų.

5 žingsnis: Išvada

Mes labai džiaugėmės galutiniu šio projekto rezultatu; ne tik todėl, kad galutinę žaidimo versiją buvo smagu žaisti, bet ir todėl, kad kurdami ir programuodami projektą turėjome panaudoti daugumą, jei ne viską, ką išmokome šį ketvirtį. Mes panaudojome šlepetes, skaitiklius, FSM, laikrodį, vartotojo įvestį iš plokštės ir išvestį į septynių segmentų ekraną.

Mes taip pat sužinojome, kaip kelios sintaksės klaidos gali visiškai sugriauti programą (net jei jos būtų laikomos tinkamomis kitomis programavimo kalbomis, pvz., „Python“ar „Java“) ir kad tik po kelių simuliacijų ir daugybės kodo iteracijų, įkeltų ir išbandytų lenta, ar pagaliau galėsite pašalinti visas savo kodo klaidas.

Rekomenduojamas: