Taula de continguts:

Minesweeper: 5 passos (amb imatges)
Minesweeper: 5 passos (amb imatges)

Vídeo: Minesweeper: 5 passos (amb imatges)

Vídeo: Minesweeper: 5 passos (amb imatges)
Vídeo: FlexAir 5. Slav and Furious. 2024, De novembre
Anonim
Minesweeper
Minesweeper

Per al nostre projecte final de CPE 133, Chase i jo vam decidir crear un joc "Minesweeper" que utilitzava l'entrada de botons i canvis des d'una placa Basys-3, així com el codi VHDL. Un millor nom per al joc podria molt bé ser "Ruleta russa", tot i que volíem anar amb un nom més familiar. El joc implica que l'usuari prem el botó central del tauler Basys per assignar a l'atzar un dels 16 commutadors perquè estigui "actiu" amb una bomba. A continuació, dos jugadors alternen els interruptors, un per un, fins que un dels jugadors gira l’interruptor amb la "bomba". Quan això passa, la pantalla de set segments avisa als jugadors que aquest jugador acaba de perdre el joc.

Pas 1: Visió general

El projecte va utilitzar molts dels mòduls VHDL que hem utilitzat al llarg d’aquest trimestre. Es va utilitzar un comptador de quatre bits junt amb la vora del rellotge per tal de simular un número aleatori de quatre bits per activar un dels commutadors. També es va utilitzar un diagrama d’estats per enviar paraules diferents a la pantalla de set segments, que van des de "JUGAR" quan els jugadors es troben a la meitat del seu joc, fins a "PERDRE" quan un dels jugadors ha girat l'interruptor actiu.

Pas 2: materials

  • Basys3 Development Board de Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (Aquest fitxer ens el van proporcionar a Polylearn i va ser escrit per Bryan Mealy)
  • Un comptador de 4 bits format amb xancletes T.
  • Un FSM

Pas 3: Creació del joc

Fent el joc
Fent el joc
Fent el joc
Fent el joc

El primer pas per fer aquest joc va ser dibuixar un diagrama de circuits amb tots els components que farem servir. Les entrades d’aquest sistema eren el botó 1, els 16 commutadors i el rellotge. Les sortides eren la pantalla de set segments i els ànodes. Després de dibuixar el diagrama de circuits, vam escriure fitxers font individuals per a cada component de Vivado i els vam ajuntar mitjançant mapes de ports sota el fitxer font principal.

Tota la base del joc gira al voltant d’assignar a l’atzar un dels 16 commutadors perquè estigui actiu amb una bomba i que els jugadors no sàpiguen quin interruptor està actiu fins que aquest interruptor actiu no s’encengui. Vam examinar en línia els generadors de nombres aleatoris i pseudoreatoris, però finalment vam decidir que utilitzar un comptador de 4 bits i assignar el commutador corresponent per estar actiu és prou aleatori per al que buscàvem. Hem pogut reutilitzar el comptador de 4 bits que vam crear en un projecte anterior per poder treballar en aquesta tasca. Hem utilitzat el comptador per crear un número aleatori entre 0-15; a continuació, al component main1, hem assignat l'equivalent decimal del nombre aleatori al seu corresponent commutador al tauler. Com es veu a l’esquema, tant la sortida X (‘bomba activa’) del component main1 com els commutadors que els reproductors activen passen a FSM1. La màquina d’estats genera un valor Z d’un bit que després llegeix BC_DEC1. La màquina d’estats finits que hem utilitzat té dos estats diferents: a l’estat A, els set segments mostren les sortides ‘PLAY’ i la màquina es manté en aquest estat fins que reconeix que l’interruptor activat es gira. Un cop això passi, l’SMF passa a l’estat B, on surt "PERDRE" a la pantalla de set segments i es manté en aquest estat fins que els 16 commutadors es posin a "0". Quan es compleix aquesta condició, el FSM torna a passar a l'estat A i espera que els jugadors comencin una altra partida. A la part superior es mostra un diagrama de Moore per ajudar a entendre aquest FSM.

Pas 4: futures modificacions

Algunes de les modificacions que estàvem pensant en fer al nostre joc inclouen afegir més bombes al camp (possiblement augmentar d'una a tres), afegir un comptador de puntuacions i diverses rondes. Al final, ens vam decidir en contra d’aquestes millores, ja que vam trobar que jugar a un joc més llarg i llarg solia ser més tens i, al final, més divertit que un joc que normalment acabava després de tres o quatre canvis d’inversió.

Pas 5: Conclusió

Estàvem molt contents del resultat final d’aquest projecte; no només perquè la versió final del joc va ser divertida de jugar, sinó també perquè la creació i la programació del projecte ens obligaven a utilitzar la majoria, si no tot, el que hem après aquest trimestre. Hem utilitzat xancles, comptadors, FSM, el rellotge, l’entrada de l’usuari des del tauler i la sortida a la pantalla de set segments.

També vam aprendre com alguns errors de sintaxi podrien trencar completament el programa (fins i tot si es consideressin bons en altres llenguatges de programació com Python o Java) i que només després de múltiples simulacions i múltiples iteracions del codi carregades i provades al, finalment podreu eliminar tots els errors del vostre codi.

Recomanat: