Indholdsfortegnelse:

Minestryger: 5 trin (med billeder)
Minestryger: 5 trin (med billeder)

Video: Minestryger: 5 trin (med billeder)

Video: Minestryger: 5 trin (med billeder)
Video: Смерть в отеле: Что произошло с девушкой, которую никто не знал? 2024, November
Anonim
Minestryger
Minestryger

Til vores CPE 133-afsluttende projekt besluttede Chase og jeg at oprette et 'Minesweeper' -spil, der brugte knapper og skift input fra et Basys-3-kort samt VHDL-kode. Et bedre navn til spillet kunne meget vel være 'Russian Roulette', men vi ønskede at gå med et mere familievenligt navn. Spillet involverer brugeren til at trykke på den midterste knap på Basys -tavlen for tilfældigt at tildele en af de 16 kontakter til at være 'aktiv' med en bombe. To spillere skiftes derefter til at vende kontakter op, en ad gangen, indtil en af spillerne vender kontakten med 'bomben'. Når det sker, viser det syv segment display displayet til spillerne, at den spiller lige har tabt spillet.

Trin 1: Oversigt

Projektet udnyttede mange af de VHDL -moduler, som vi har brugt i løbet af dette kvartal. En fire bit tæller blev brugt i forbindelse med urets kant for at simulere et tilfældigt fire bit tal for at aktivere en af switchene. Et tilstandsdiagram blev også brugt til at udsende forskellige ord til syv segmentdisplayet, lige fra 'PLAY', når spillerne er midt i deres spil, til 'LOSE', når en af spillerne har vendt den aktive switch.

Trin 2: Materialer

  • Basys3 Development Board fra Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (Denne fil blev leveret til os på Polylearn og blev skrevet af Bryan Mealy)
  • En 4 bit tæller lavet af T flip -flops
  • En FSM

Trin 3: Lav spillet

At lave spillet
At lave spillet
At lave spillet
At lave spillet

Det første skridt mod at lave dette spil var at tegne et kredsløbsdiagram med alle de komponenter, vi vil bruge. Indgange til dette system var knap 1, de 16 kontakter og uret. Outputs var displayet med syv segmenter og anoderne. Efter at have tegnet kredsløbsdiagrammet skrev vi individuelle kildefiler for hver komponent i Vivado og satte dem sammen ved hjælp af portkort under hovedkildefilen.

Hele grundlaget for spillet drejer sig om tilfældigt at tildele en af de 16 switches til at være aktiv med en bombe, og for at spillerne ikke ved, hvilken switch der er aktiv, før den aktive switch tændes. Vi undersøgte tilfældige og pseudotilfældige talgeneratorer online, men vi besluttede til sidst, at det var tilstrækkeligt tilfældigt at bruge en 4-bit tæller og tildele den tilsvarende switch til at være aktiv til det, vi ledte efter. Vi var i stand til at genanvende vores 4-bit tæller, som vi oprettede i et tidligere projekt for at kunne arbejde til denne opgave. Vi brugte tælleren til at oprette et tilfældigt tal mellem 0-15; derefter i main1 -komponenten tildelte vi decimalækvivalenten af tilfældigt tal til den tilsvarende switch på tavlen. Som det ses i skematikken, går både output X ('aktiv bombe') fra main1 -komponent og switches, spillerne tænder til FSM1. Tilstandsmaskinen udsender en Z -værdi på en bit, som derefter læses af BC_DEC1. Den endelige tilstandsmaskine, vi brugte, har to forskellige tilstande: i tilstand A udsender de syv segmentdisplay 'PLAY', og maskinen forbliver i denne tilstand, indtil den genkender, at den aktiverede kontakt er vendt. Når det sker, går FSM til tilstand B, hvor den sender 'LOSE' til det syv segment display og forbliver i denne tilstand, indtil alle 16 switches vendes til '0'. Når denne betingelse er opfyldt, går FSM derefter igen til tilstand A og venter på, at spillerne starter et andet spil. Et Moore -diagram til hjælp med at forstå denne FSM er vist ovenfor.

Trin 4: Fremtidige ændringer

Et par ændringer, vi overvejede at foretage i vores spil, omfatter tilføjelse af flere bomber til feltet (muligvis stigning fra en til tre), tilføjelse af en scoringstæller og flere runder. Vi besluttede i sidste ende imod disse forbedringer, da vi fandt ud af, at det at spille et længere, forlænget spil typisk var mere spændt og i sidste ende sjovere end et spil, der typisk sluttede efter tre eller fire switch -vendinger.

Trin 5: Konklusion

Vi var meget tilfredse med det endelige resultat af dette projekt; ikke kun fordi den sidste version af spillet var sjovt at spille, men også fordi at skabe og programmere projektet krævede, at vi brugte det meste, hvis ikke alt det, vi lærte i dette kvartal. Vi brugte flip -flops, tællere, FSM'er, uret, brugerinput fra kortet og output til displayet med syv segmenter.

Vi lærte også, hvordan et par syntaksfejl helt kunne bryde programmet (selvom de ville blive betragtet som fine i andre programmeringssprog som Python eller Java), og det kun efter flere simuleringer og flere iterationer af koden, der blev uploadet til og testet på board, vil du endelig kunne arbejde alle fejl ud af din kode.

Anbefalede: