Innehållsförteckning:
Video: Minesvepare: 5 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
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
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:
Ta fantastiska bilder med en iPhone: 9 steg (med bilder)
Ta fantastiska bilder med en iPhone: De flesta av oss har en smartphone med oss överallt nuförtiden, så det är viktigt att veta hur du använder din smartphone -kamera för att ta fantastiska bilder! Jag har bara haft en smartphone i ett par år, och jag har älskat att ha en bra kamera för att dokumentera saker jag
Hur: Installera Raspberry PI 4 Headless (VNC) med Rpi-imager och bilder: 7 steg (med bilder)
Hur: Installera Raspberry PI 4 Headless (VNC) med Rpi-imager och bilder: Jag planerar att använda denna Rapsberry PI i ett gäng roliga projekt tillbaka i min blogg. Kolla gärna in det. Jag ville börja använda mitt Raspberry PI men jag hade inte ett tangentbord eller en mus på min nya plats. Det var ett tag sedan jag installerade en hallon
Hur man digitaliserar bilder och filmnegativ med en DSLR: 12 steg (med bilder)
Hur man digitaliserar diabilder och filmnegativ med en DSLR: En mångsidig och stabil inställning för digitalisering av diabilder och negativ med en DSLR eller en kamera med ett makroalternativ. Denna instruerbara är en uppdatering av Hur man digitaliserar 35 mm negativ (uppladdad juli 2011) med flera förbättringar för att utöka dess
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter - Rc helikopter - RC -plan med Arduino: 5 steg (med bilder)
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter | Rc helikopter | Rc -plan med Arduino: Att driva en Rc -bil | Quadcopter | Drone | RC -plan | RC -båt, vi behöver alltid en mottagare och sändare, antag att för RC QUADCOPTER behöver vi en 6 -kanals sändare och mottagare och den typen av TX och RX är för dyr, så vi kommer att göra en på vår
Hur man tar isär en dator med enkla steg och bilder: 13 steg (med bilder)
Hur man tar isär en dator med enkla steg och bilder: Detta är en instruktion om hur man demonterar en dator. De flesta av de grundläggande komponenterna är modulära och lätt att ta bort. Det är dock viktigt att du är organiserad kring det. Detta hjälper dig att inte förlora delar, och även för att göra ommonteringen