Innehållsförteckning:

Minesvepare: 5 steg (med bilder)
Minesvepare: 5 steg (med bilder)

Video: Minesvepare: 5 steg (med bilder)

Video: Minesvepare: 5 steg (med bilder)
Video: Возведение перегородок санузла из блоков. Все этапы. #4 2024, Juli
Anonim
Minsvepare
Minsvepare

För vårt CPE 133-slutprojekt beslutade Chase och jag att skapa ett "Minesweeper" -spel som använde knapp- och switchingång från ett Basys-3-kort samt VHDL-kod. Ett bättre namn på spelet kan mycket väl vara "Russian Roulette", men vi ville ha ett mer familjevänligt namn. Spelet innebär att användaren trycker på mittenknappen på Basys -kortet för att slumpmässigt tilldela en av de 16 omkopplarna att vara "aktiv" med en bomb. Två spelare turas om att vända omkopplare, en i taget, tills en av spelarna vänder omkopplaren med "bomben". När det händer varnar sju segmentdisplayen spelarna om att den spelaren just har förlorat spelet.

Steg 1: Översikt

Projektet använde många av VHDL -modulerna som vi har använt under det här kvartalet. En fyrbitarsräknare användes tillsammans med klockans kant för att simulera ett slumpmässigt fyrbitarsnummer för att aktivera en av omkopplarna. Ett tillståndsdiagram användes också för att mata ut olika ord till sju segmentdisplayen, allt från "PLAY" när spelarna är mitt i spelet, till "LOSE" när en av spelarna har vänt den aktiva omkopplaren.

Steg 2: Material

  • Basys3 Development Board från Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (Denna fil levererades till oss på Polylearn och skrevs av Bryan Mealy)
  • En 4 -bitars räknare av T -flip -flops
  • En FSM

Steg 3: Gör spelet

Att göra spelet
Att göra spelet
Att göra spelet
Att göra spelet

Det första steget mot att göra detta spel var att rita ett kretsschema med alla komponenter som vi kommer att använda. Ingångar för detta system var knapp 1, de 16 omkopplarna och klockan. Utgångar var sju segmentvisning och anoder. Efter att ha ritat kretsschemat skrev vi individuella källfiler för varje komponent i Vivado och satte ihop dem med portkartor under huvudkällfilen.

Hela grunden för spelet kretsar kring att slumpmässigt tilldela en av de 16 omkopplarna att vara aktiva med en bomb, och för att spelarna inte ska veta vilken omkopplare som är aktiv förrän den aktiva omkopplaren slås på. Vi undersökte slumpmässiga och pseudoslumpmässiga generatorer online, men så småningom bestämde vi oss för att det är tillräckligt slumpmässigt att använda en 4-bitarsräknare och tilldela motsvarande switch för att vara aktiv för det vi letade efter. Vi kunde återanvända vår 4-bitars räknare som vi skapade i ett tidigare projekt för att kunna arbeta för detta uppdrag. Vi använde räknaren för att skapa ett slumpmässigt tal mellan 0-15; sedan i main1 -komponenten tilldelade vi decimalekvivalenten för slumpmässigt tal till dess motsvarande switch på kortet. Som framgår av schemat går både utgången X ('aktiv bomb') från main1 -komponenten och switcharna som spelarna slår på till FSM1. Tillståndsmaskinen matar ut ett Z -värde på en bit som sedan läses av BC_DEC1. Den slutliga tillståndsmaskinen vi använde har två olika tillstånd: i tillstånd A matar de sju segmentdisplayen ut”PLAY” och maskinen förblir i det tillståndet tills den känner igen att den aktiverade omkopplaren vänds. När det händer går FSM till tillstånd B där det matas ut "LOSE" till sju segmentdisplayen och förblir i det tillståndet tills alla 16 omkopplare vänds till "0". När detta villkor är uppfyllt går FSM återigen till tillstånd A och väntar på att spelarna ska starta ett nytt spel. Ett Moore -diagram för att förstå denna FSM visas ovan.

Steg 4: Framtida ändringar

Några ändringar vi övervägde att göra i vårt spel inkluderar att lägga till fler bomber på fältet (eventuellt öka från en till tre), lägga till en poängräknare och flera omgångar. Vi bestämde oss slutligen för dessa förbättringar, eftersom vi fann att att spela ett längre, förlängt spel vanligtvis vanligtvis var mer spänt och i slutändan roligare än ett spel som vanligtvis slutade efter tre eller fyra switchflips.

Steg 5: Slutsats

Vi var mycket nöjda med det slutliga resultatet av detta projekt; inte bara för att den slutliga versionen av spelet var kul att spela, utan också för att skapa och programmera projektet krävde att vi använde det mesta, om inte allt vi lärt oss detta kvartal. Vi använde flip -flops, räknare, FSM, klockan, användarinmatning från kortet och utmatning till sjusegmentsdisplayen.

Vi lärde oss också hur några syntaxfel helt kunde bryta programmet (även om de skulle anses vara bra på andra programmeringsspråk som Python eller Java) och det först efter flera simuleringar och flera iterationer av koden som laddades upp och testades på ombord, kommer du äntligen att kunna ta bort alla buggar ur din kod.

Rekommenderad: