Innholdsfortegnelse:

Minesveiper: 5 trinn (med bilder)
Minesveiper: 5 trinn (med bilder)

Video: Minesveiper: 5 trinn (med bilder)

Video: Minesveiper: 5 trinn (med bilder)
Video: Узнав это СЕКРЕТ, ты никогда не выбросишь пластиковую бутылку! ТАКОГО ЕЩЕ НИКТО НЕ ВИДЕЛ! 2024, November
Anonim
Minesveiper
Minesveiper

For vårt siste prosjekt CPE 133 bestemte Chase og jeg oss for å lage et "Minesveiper" -spill som brukte knapp og bytte inngang fra et Basys-3-kort samt VHDL-kode. Et bedre navn på spillet kan godt være 'Russian Roulette', men vi ønsket å gå med et mer familievennlig navn. Spillet innebærer at brukeren trykker på den midtre knappen på Basys -brettet for å tilfeldig tildele en av de 16 bryterne til å være "aktiv" med en bombe. To spillere veksler deretter på å bytte brytere, en om gangen, til en av spillerne vender bryteren med "bomben". Når det skjer, varsler sju segmentskjermen spillerne om at den spilleren nettopp har tapt spillet.

Trinn 1: Oversikt

Prosjektet brukte mange av VHDL -modulene som vi har brukt i løpet av dette kvartalet. En fire bit teller ble brukt i forbindelse med klokkekanten for å simulere et tilfeldig fire bit tall for å aktivere en av bryterne. Et tilstandsdiagram ble også brukt for å sende forskjellige ord til sju segmenters display, alt fra "PLAY" når spillerne er midt i spillet, til "LOSE" når en av spillerne har vendt den aktive bryteren.

Trinn 2: Materialer

  • Basys3 Development Board fra Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (Denne filen ble levert til oss på Polylearn og ble skrevet av Bryan Mealy)
  • En 4 -bits teller laget av T -flip -flops
  • En FSM

Trinn 3: Lag spillet

Å lage spillet
Å lage spillet
Å lage spillet
Å lage spillet

Det første trinnet mot å lage dette spillet var å tegne et kretsdiagram med alle komponentene vi skal bruke. Innganger for dette systemet var knapp 1, de 16 bryterne og klokken. Utgangene var displayet med syv segmenter og anodene. Etter å ha tegnet kretsdiagrammet, skrev vi individuelle kildefiler for hver komponent i Vivado og satte dem sammen ved hjelp av portkart under hovedkildefilen.

Hele grunnlaget for spillet dreier seg om å tilfeldig tildele en av de 16 bryterne til å være aktiv med en bombe, og for at spillerne ikke skal vite hvilken bryter som er aktiv før den aktive bryteren er slått på. Vi så på tilfeldige og pseudoslåtte tallgeneratorer på nettet, men vi bestemte oss til slutt for at bruk av en 4-bits teller og tilordne den tilhørende bryteren til å være aktiv er tilstrekkelig tilfeldig for det vi lette etter. Vi var i stand til å gjenbruke vår 4-bits teller som vi opprettet i et tidligere prosjekt for å kunne jobbe for dette oppdraget. Vi brukte telleren til å lage et tilfeldig tall mellom 0-15; deretter i hoved1 -komponenten tildelte vi desimalekvivalenten til det tilfeldige tallet til den tilhørende bryteren på tavlen. Som vist i skjematikken, går både utgangen X ('aktiv bombe') fra hoved1 -komponenten og bryterne spillerne slår på til FSM1. Tilstandsmaskinen sender ut en bit Z -verdi som deretter leses av BC_DEC1. Den endelige tilstandsmaskinen vi brukte har to forskjellige tilstander: i tilstand A sender de syv segmentdisplayene ut 'PLAY', og maskinen forblir i denne tilstanden til den gjenkjenner at den aktiverte bryteren vendes. Når det skjer, går FSM til tilstand B hvor den sender ut «LOSE» til displayet med syv segmenter og forblir i den tilstanden til alle de 16 bryterne vendes til ‘0’. Når denne betingelsen er oppfylt, går FSM igjen til tilstand A og venter på at spillerne skal starte et nytt spill. Et Moore -diagram for å forstå denne FSM er vist ovenfor.

Trinn 4: Fremtidige modifikasjoner

Noen få modifikasjoner vi vurderte å gjøre i spillet vårt, inkluderer å legge til flere bomber på feltet (muligens øke fra en til tre), legge til en teller og flere runder. Vi bestemte oss til slutt mot disse forbedringene, da vi fant ut at det å spille et lengre, forlenget spill vanligvis var mer anspent og til slutt morsommere enn et spill som vanligvis endte etter tre eller fire bytteflipper.

Trinn 5: Konklusjon

Vi var veldig fornøyd med det endelige resultatet av dette prosjektet; ikke bare fordi den endelige versjonen av spillet var morsom å spille, men også fordi det å lage og programmere prosjektet krevde at vi brukte det meste, om ikke alt vi lærte dette kvartalet. Vi brukte flip -flops, tellere, FSM -er, klokken, brukerinngang fra brettet og utgang til displayet med syv segmenter.

Vi lærte også hvordan noen få syntaksfeil helt kunne ødelegge programmet (selv om de ville bli betraktet som fine på andre programmeringsspråk som Python eller Java), og det bare etter at flere simuleringer og flere iterasjoner av koden ble lastet opp til og testet på bord, vil du endelig kunne jobbe alle feilene ut av koden din.

Anbefalt: