Sisukord:
- 1. samm: ülevaade
- 2. samm: materjalid
- 3. samm: mängu loomine
- 4. samm: tulevased muudatused
- 5. samm: järeldus
Video: Miinilaev: 5 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:50
Meie CPE 133 lõpliku projekti jaoks otsustasime Chase'iga luua "Miinilaeva" mängu, mis kasutas nuppu ja lülitit Basys-3 plaadilt ning VHDL-koodi. Mängu parem nimi võiks väga hästi olla „vene rulett”, kuid tahtsime minna peresõbralikuma nimega. Mäng hõlmab kasutajat, kes vajutab Basys -tahvli keskmist nuppu, et määrata juhuslikult üks 16 -st lülitist pommiga aktiivseks. Seejärel keeravad kaks mängijat kordamööda lülitid üles, kuni üks mängijatest pöörab lülitit pommiga. Kui see juhtub, hoiatab seitsme segmendi ekraan mängijatele, et see mängija on mängu just kaotanud.
1. samm: ülevaade
Projektis kasutati paljusid VHDL -mooduleid, mida oleme selle kvartali jooksul kasutanud. Koos kella servaga kasutati neljabitist loendurit, et simuleerida juhuslikku neljabitist numbrit ühe lüliti aktiveerimiseks. Samuti kasutati olekudiagrammi erinevate sõnade väljastamiseks seitsme segmendi ekraanile, alates „PLAY”, kui mängijad on oma mängu keskel, kuni „LOSE”, kui üks mängijatest on lülitanud aktiivse lüliti.
2. samm: materjalid
- Basile3 arendusnõukogu firmast Digilent, Inc.
- Vivado Design Suite BC_DEC.vhd (See fail esitati meile saidil Polylearn ja selle kirjutas Bryan Mealy)
- 4 -bitine loendur, mis on valmistatud T -papudest
- FSM
3. samm: mängu loomine
Esimene samm selle mängu tegemiseks oli skeemi joonistamine kõigi komponentidega, mida me kasutame. Selle süsteemi sisendid olid nupp 1, 16 lülitit ja kell. Väljunditeks olid seitsme segmendi ekraan ja anoodid. Pärast vooluringi joonistamist kirjutasime Vivados iga komponendi jaoks eraldi lähtefailid ja panime need kokku, kasutades peamise lähtefaili all olevaid pordikaarte.
Kogu mängu alus keerleb selle ümber, et juhuslikult määratakse üks 16 lülitist pommiga aktiivseks ja et mängijad ei teaks, milline lüliti on aktiivne, kuni see aktiivne lüliti sisse lülitatakse. Vaatasime veebis juhuslike ja pseudojuhuslike numbrite generaatoreid, kuid lõpuks otsustasime, et 4-bitise loenduri kasutamine ja vastava lüliti aktiivseks määramine on otsitava jaoks piisavalt juhuslik. Selle ülesande täitmiseks saime oma eelmises projektis loodud 4-bitise loenduri uuesti kasutusele võtta. Loenduri abil koostasime juhusliku arvu vahemikus 0-15; siis komponendis main1 määrasime juhusliku numbri kümnendekvivalendi selle vastavale lülitile tahvlil. Nagu skemaatiliselt näha, lähevad nii põhivälja komponendi väljund X (aktiivne pomm) kui ka lülitid, mille mängijad sisse lülitavad, FSM1 -le. Olekumasin väljastab ühe bitise Z väärtuse, mida BC_DEC1 loeb. Lõppseisumasinal, mida me kasutasime, on kaks erinevat olekut: olekus A kuvatakse seitsme segmendi kuva „PLAY” ja masin jääb sellesse olekusse, kuni tuvastab aktiveeritud lüliti pööramise. Kui see on juhtunud, läheb FSM olekusse B, kus see väljastab seitsme segmendi ekraanile „LOSE” ja jääb sellesse olekusse, kuni kõik 16 lülitit on asendis „0”. Kui see tingimus on täidetud, läheb Mikroneesia taas osariiki A ja ootab mängijaid alustama uut mängu. Moore'i diagramm selle FSM -i mõistmiseks on näidatud ülal.
4. samm: tulevased muudatused
Mõned muudatused, mida me oma mängu tegemisel kaalusime, hõlmasid platsile rohkemate pommide lisamist (võib -olla ühelt kolmele suurendamist), tulemuste loenduri lisamist ja mitu vooru. Lõppkokkuvõttes otsustasime nende täiustuste vastu, kuna leidsime, et pikema ja pikema mängu mängimine oli tavaliselt pingelisem ja lõpuks lõbusam kui mäng, mis lõppes tavaliselt pärast kolme või nelja ümberlülitamist.
5. samm: järeldus
Olime selle projekti lõpptulemusega väga rahul; mitte ainult sellepärast, et mängu lõplikku versiooni oli lõbus mängida, vaid ka sellepärast, et projekti loomine ja programmeerimine nõudis meilt selle veerandi jooksul õpitu ärakasutamist. Kasutasime plätusid, loendureid, FSM -e, kella, kasutaja sisendit tahvlilt ja väljundit seitsme segmendi ekraanile.
Samuti saime teada, kuidas mõned süntaksivead võivad programmi täielikult katkestada (isegi kui neid peetaks heaks ka teistes programmeerimiskeeltes, näiteks Pythonis või Java -s), ja et alles pärast seda, kui kood on mitu korda simuleeritud ja kordatud, on üles laaditud ja testitud. pardal, kas saate lõpuks kõik vead oma koodist välja töötada.
Soovitan:
DIY 37 LED Arduino ruleti mäng: 3 sammu (piltidega)
DIY 37 Leds Arduino rulett Mäng: Rulett on kasiinomäng, mis on nime saanud prantsuse sõna järgi, mis tähendab väikest ratast
Kuidas: Raspberry PI 4 peata (VNC) installimine RPI-pildistaja ja piltidega: 7 sammu (koos piltidega)
Kuidas: Raspberry PI 4 peata (VNC) installimine Rpi-pildistaja ja piltidega: kavatsen seda Rapsberry PI-d kasutada oma blogis hunniku lõbusate projektide jaoks. Vaadake seda julgelt. Tahtsin uuesti oma Raspberry PI kasutamist alustada, kuid mul polnud uues asukohas klaviatuuri ega hiirt. Vaarika seadistamisest oli tükk aega möödas
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Polt - DIY juhtmeta laadimise öökell (6 sammu): 6 sammu (piltidega)
Bolt - DIY juhtmeta laadimise öökell (6 sammu): Induktiivsed laadimised (tuntud ka kui juhtmeta laadimine või juhtmeta laadimine) on traadita jõuülekande tüüp. See kasutab kaasaskantavatele seadmetele elektrit pakkumiseks elektromagnetilist induktsiooni. Kõige tavalisem rakendus on Qi traadita laadimisst
Arvuti demonteerimine lihtsate sammude ja piltidega: 13 sammu (piltidega)
Arvuti demonteerimine lihtsate sammude ja piltidega: see on juhis arvuti demonteerimiseks. Enamik põhikomponente on modulaarsed ja kergesti eemaldatavad. Siiski on oluline, et oleksite selles osas organiseeritud. See aitab vältida osade kaotamist ja ka kokkupanekut