Përmbajtje:

Mineweeper: 5 hapa (me fotografi)
Mineweeper: 5 hapa (me fotografi)

Video: Mineweeper: 5 hapa (me fotografi)

Video: Mineweeper: 5 hapa (me fotografi)
Video: Зачем мы спасли ПРИШЕЛЬЦА от ЛЮДЕЙ В ЧЕРНОМ!? ПРИШЕЛЬЦЫ В РЕАЛЬНОЙ ЖИЗНИ! 2024, Nëntor
Anonim
Pastrues minash
Pastrues minash

Për projektin tonë përfundimtar CPE 133, Chase dhe unë vendosëm të krijonim një lojë ‘Minesweeper’ që përdorte butonin dhe ndërronte hyrjen nga një tabelë Basys-3, si dhe kodin VHDL. Një emër më i mirë për lojën mund të jetë fare mirë "Ruleta Ruse", megjithatë ne donim të shkonim me një emër më miqësor ndaj familjes. Loja përfshin përdoruesin të shtypë butonin e mesëm në tabelën Basys për të caktuar rastësisht një nga 16 çelsat të jetë "aktiv" me një bombë. Dy lojtarë pastaj kthejnë me radhë çelsin, një nga një, derisa njëri prej lojtarëve të kthejë çelësin me "bombën". Kur kjo ndodh, ekrani me shtatë segment paralajmëron lojtarët se ai lojtar sapo ka humbur lojën.

Hapi 1: Vështrim i përgjithshëm

Projekti përdori shumë nga modulet VHDL që ne kemi përdorur gjatë këtij tremujori. Një numërues katër bitësh u përdor në lidhje me skajin e orës në mënyrë që të simulonte një numër të rastësishëm katër bitësh për të aktivizuar njërin nga çelsat. Një diagram i gjendjes u përdor gjithashtu për të nxjerrë fjalë të ndryshme në ekranin me shtatë segmente, duke filluar nga "PLAY" kur lojtarët janë në mes të lojës së tyre, deri në "LOSE" kur njëri nga lojtarët ka rrotulluar çelësin aktiv.

Hapi 2: Materialet

  • Bordi i Zhvillimit Basys3 nga Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (Ky skedar na u sigurua në Polylearn dhe u shkrua nga Bryan Mealy)
  • Një banak 4 bit i bërë nga rrokulliset T
  • Një FSM

Hapi 3: Krijimi i lojës

Duke bërë lojën
Duke bërë lojën
Duke bërë lojën
Duke bërë lojën

Hapi i parë drejt bërjes së kësaj loje ishte vizatimi i një diagrami qarkor me të gjithë përbërësit që do të përdorim. Hyrjet për këtë sistem ishin butoni 1, 16 çelsat dhe Ora. Rezultatet ishin ekrani me shtatë segmente dhe anodat. Pasi vizatuam diagramin e qarkut, ne shkruam skedarë burim individual për secilin komponent në Vivado dhe i vendosëm së bashku duke përdorur hartat e portit nën skedarin burimor kryesor.

E gjithë baza e lojës sillet rreth caktimit rastësisht të njërit prej 16 çelsave që të jetë aktiv me një bombë, dhe që lojtarët të mos e dinë se cili ndërprerës është aktiv derisa kyç aktiv të ndizet. Ne shikuam gjeneruesit e numrave të rastit dhe pseudorandomë në internet, por përfundimisht vendosëm që përdorimi i një numëruesi 4-bit dhe caktimi i ndërprerësit përkatës për të qenë aktiv është mjaft i rastësishëm për atë që ne po kërkonim. Ne ishim në gjendje të ripërdorim numëruesin tonë 4-bit që krijuam në një projekt të mëparshëm për të qenë në gjendje të punojmë për këtë detyrë. Ne përdorëm numëruesin për të krijuar një numër të rastit midis 0-15; pastaj në komponentin main1, i caktuam ekuivalentin dhjetor të numrit të rastit kalimit të tij përkatës në tabelë. Siç shihet në skemë, si dalja X ('bombë aktive') nga komponenti main1 ashtu edhe çelsat që ndizen lojtarët shkojnë në FSM1. Makina shtetërore nxjerr një vlerë një bit Z e cila më pas lexohet nga BC_DEC1. Makina e Gjendjes së Fundit që përdorëm ka dy gjendje të ndryshme: në gjendjen A, daljet e ekranit me shtatë segmente ‘PLAY’ dhe makina qëndron në atë gjendje derisa të pranojë që çelësi i aktivizuar është i përmbysur. Pasi të ndodhë kjo, FSM shkon në gjendjen B ku nxjerr 'LOSE' në ekranin e shtatë segmenteve dhe qëndron në atë gjendje derisa të 16 ndërprerësit të kthehen në '0'. Kur plotësohet ai kusht, FSM -ja përsëri shkon në gjendjen A dhe pret lojtarët të fillojnë një lojë tjetër. Një diagram Moore për të ndihmuar në kuptimin e këtij FSM është treguar më lart.

Hapi 4: Modifikimet e së ardhmes

Disa modifikime që ne po merrnim parasysh për të bërë në lojën tonë përfshijnë shtimin e më shumë bombave në fushë (ndoshta duke u rritur nga një në tre), duke shtuar një numërues rezultatesh dhe raunde të shumta. Ne përfundimisht vendosëm kundër këtyre përmirësimeve, pasi zbuluam se luajtja e një loje më të gjatë, të zgjatur zakonisht ishte më e tensionuar dhe në fund më shumë argëtuese sesa një lojë që përfundoi zakonisht pas tre ose katër rrokullisjeve.

Hapi 5: Përfundimi

Ne ishim shumë të kënaqur me rezultatin përfundimtar të këtij projekti; jo vetëm sepse versioni përfundimtar i lojës ishte i këndshëm për tu luajtur, por edhe sepse krijimi dhe programimi i projektit na kërkoi të shfrytëzonim më së shumti, nëse jo gjithçka që mësuam këtë tremujor. Ne përdorëm Flip Flops, sportele, FSM, orën, hyrjen e përdoruesit nga bordi dhe daljen në ekranin e shtatë segmenteve.

Ne gjithashtu mësuam se si disa gabime sintaksore mund të prishin plotësisht programin (edhe nëse ato do të konsideroheshin të mira në gjuhë të tjera programimi si Python ose Java) dhe se vetëm pas simulimeve të shumta dhe përsëritjeve të shumta të kodit të ngarkuar dhe testuar në bord, a do të jeni më në fund në gjendje të punoni të gjitha defektet nga kodi juaj.

Recommended: