Indholdsfortegnelse:

2 Player Competitive VS Timing Game: 4 trin
2 Player Competitive VS Timing Game: 4 trin

Video: 2 Player Competitive VS Timing Game: 4 trin

Video: 2 Player Competitive VS Timing Game: 4 trin
Video: How to play the Game of Pure Strategy (aka GOPS) 2024, Juli
Anonim
2 Player Competitive VS Timing Game
2 Player Competitive VS Timing Game

Du får brug for:

1. Digilent Basys 3, FPGA Board (eller enhver anden FPGA,)

2. En relativt opdateret version af Vivado eller et andet VHDL -miljø

3. En computer, der kan køre det nævnte program.

Trin 1: Selve spillet

Selve spillet
Selve spillet

Hvordan FSM interagerer med modulerne.

Sådan spiller du

For at starte skal du trykke på den midterste knap. Dette får "99", der repræsenterer spillerens to helbred, til at blive vist på displayet med syv segmenter. Derefter lyser LED'erne i rækkefølge fra højre til venstre. Dette danner en power bar. Når strømlinjen er fuld, nulstilles den. Formålet med spiller en er at vende deres switch, når baren er så høj som muligt. Jo flere lysdioder der tændes, jo mere skade spiller man på spiller to. Efter at spiller en har vendt kontakten, fratrækkes den beskadigede skade fra spiller tos helbred. Derefter skifter den til spiller tos tur. Nu viser tallet vist spillerens helbred, og strømlinjen fyldes op fra venstre mod højre. Når spiller to foretager deres træk, fratrækkes skaden, og det er tilbage til spillerens tur igen. Dette gentages, indtil en spiller når 0 sundhed. Video af denne funktion er vedhæftet.

Trin 2: FSM

FSM
FSM
FSM
FSM
FSM
FSM
FSM
FSM

Dette spil er i det væsentlige en stor endelig tilstandsmaskine, som nogle komplekse logikker sker baseret på den tilstand, som FSM er i.

Tilstand 1: Menu Den første tilstand er menuskærmen, som er en af de enklere tilstande. Det inkluderer displayet med syv segmenter, der viser ordet "PLAY", og den knap, der får spillet til at starte. Knappen, BTN, fører os til den næste tilstand, som er spillerens tur.

Stat 2: Spillerens tur

Spillerens tur aktiverer et signal, der får displayet med syv segmenter til at vise spiller to's helbred. Et andet signal tændes for at aktivere et skiftregister importeret fra et andet modul, som vi har oprettet (Pone.vhd). Dette skiftregister får lysdioderne til at lyse som en stigende effektmåler ville gøre i andre spil, og det ville derefter nulstilles til 0, når det når den maksimale mængde lysdioder, der kunne tændes. Det opdaterer om den stigende kant af uret hentet fra barclock.vhd, som er ændret fra en lånt laboratoriefil. Vi fik spillerens bar til at starte fra højre og fyldt op til venstre, fordi spillerens switch også er til venstre (for intuitiv brugeroplevelse). Når kontakten er vendt, går staten videre til spilleren et fradrag, og mængden af LED'er aktive gemmes i et signal.

Stat 3: Spiller et fradrag Signalet med mængden af LED’er aktive bestemmer mængden af sundhed, der får fradrag. Dette gøres ved at have et andet skiftregister (deductor1.vhd), der i stedet for at øge LED'erne, reducerer dem. Dette formindskes på den stigende kant af et af de div div -moduler, som vi lånte og modificerede (downcounterclock.vhd). Lige da en LED er slukket, fratrækkes et sundhedspunkt fra spiller tos samlede helbred. Hvis spiller i løbet af denne proces når 0 sundhed, stopper vi og går straks videre til tilstanden "Game over". Ellers når LED -vektoren når "0000000000000000", går vi videre til spiller to's tur.

Stat 4: Spiller tos tur Spiller tos tur er præcis som spillerens tur, undtagen skiftregistret for den (Ptwo.bhd) går fra venstre mod højre, og kontakten er på højre side af brættet. Et signal aktiveres for at have Player 1's sundhedsvisning. Når switch 2 er aktiv, går dette videre til spiller tos fradragsvending.

Trin 5: Spiller to fradrag Ligesom spiller tos tur, spiller to fradrag fungerer meget som spiller et fradrag. Den største forskel er, at skifteregisteret, der styrer LED'ens slukning, går i den modsatte retning, hvilket er en let ændring at foretage, når du har spillerens fradrag, der fungerer korrekt.

Fase 6: Game Over Hvis nogen spiller på et tidspunkt når nul sundhed, skifter spillet til denne tilstand. Intet fancy displays. Hvis der trykkes på BTN one, nulstilles helbredet til 99, og staten går tilbage til menuen og starter effektivt spillet forfra.

Trin 3: Moduler

Moduler
Moduler

Black Box Diagram til spil

Downcounterclock (baseret på clk_div.vhd -modulet af Bryan Mealy):

Dette er uret, der håndterer timingen af fradragsholderne. Konstanten, der hedder max_count, er 3x mere end barclocks max_count -konstant. Dette vil gøre fradragsholderne 3x langsommere end barens hastighed.

Barclock - (baseret på clk_div.vhd -modulet af Bryan Mealy):

Dette ur håndterer timingen af effektmålere, som vi lavede hurtigt for at tilføre spillet vanskeligheder. Denne timing kan justeres efter din smag, øge hastigheden ved at gøre den konstante max_count til et større tal eller reducere den ved at gøre max_count til et mindre tal. Sseg_dec - (Skrevet af Bryan Mealy): Dette modul tager et 8 bit nummer som input, som det afkoder, konverterer tallet til dets decimalækvivalent og sender derefter ud til syv segment display. For at denne fil fungerer, skal du sikre dig, at dine begrænsninger matcher vores.

Pone:

Dette er et skiftregister, der forskyder bits til venstre og tilføjer en varm bit for at få det til at se ud som om effektmåleren stiger. Når alle bitene er varme, nulstilles alle bits til '0', og cyklussen starter forfra.

Ptwo:

Dette er en vendt version af P1 -modulet.

Fradrager 1:

Dette er en kombination af et skiftregister og en subtraktor. Skiftregistret går i den modsatte retning af P1’s skifteregister, hvilket angiver et fradrag. Dette fratrækker også 1 fra spiller 2's helbred for hver urcyklus, så med kombinationen af disse to funktioner ser det ud til, at modstanderens helbred falder med 1 for hver led i sundhedslinjen, der går ned.

Deductor2: Dette er en vendt version af Deductor1 -modulet.

PlayDecoder (lånt og slet ændret fra ekchen35649 hans 133 instruerbare): Dette bruges i menustaten til at vise ordet "PLAY" på de syv segment dekoder.

Trin 4: Test

Dette spil blev oprindeligt inspireret af et af minispilene fra Kirby. Det er et simpelt to-spiller spil, der kan spilles på et Basys 3 Board eller en hvilken som helst FPGA.

Trin 1: Nødvendige materialer

Du skal bruge: Digilent Basys 3, FPGA Board (eller en hvilken som helst anden) En relativt opdateret version af Vivado eller et andet vhdl -miljø En computer, der kan køre det nævnte program En hjerne

Trin 2: Selve spillet

Sådan spiller du

For at starte skal du trykke på den midterste knap. Dette får "99", der repræsenterer spillerens to helbred, til at blive vist på displayet med syv segmenter. Derefter lyser LED'erne i rækkefølge fra højre til venstre. Dette danner en power bar. Når strømlinjen er fuld, nulstilles den. Formålet med spiller en er at vende kontakten, når stangen er så høj som muligt. Jo flere lysdioder der tændes, jo mere skade spiller man på spiller to. Efter at spiller en har vendt kontakten, fratrækkes den beskadigede skade fra spiller tos helbred. Derefter skifter den til spiller tos tur. Nu viser tallet vist spillerens helbred, og strømlinjen fyldes op fra venstre mod højre. Når spiller to foretager deres træk, fratrækkes skaden, og det er tilbage til spillerens tur igen. Dette gentages, indtil en spiller når 0 sundhed. Video af denne funktion er vedhæftet.

For at spille spillet skal du indlæse det på et grundlæggende bræt og trykke på den midterste knap. Prøv at vende kontakten med så mange lysdioder aktive som muligt, og vent derefter og se, når brættet trækker disse punkter fra din modstanders helbred. Giv det derefter videre til din ven, og

Trin 3: FSM

Dette spil er i det væsentlige en stor endelig tilstandsmaskine, som nogle komplekse logikker sker baseret på den tilstand, som FSM er i.

(Statens diagram)

Tilstand 1: Menu

Den første tilstand er menuskærmen, som er en af de enklere tilstande. Det inkluderer det syv segment display, der viser ordet "PLAY", og den knap, der får spillet til at starte. Knappen, BTN, fører os til den næste tilstand, som er spillerens tur.

Stat 2: Spillerens tur

Spillerens tur aktiverer et signal, der får displayet med syv segmenter til at vise spiller to's helbred. Et andet signal tændes for at aktivere et skiftregister importeret fra et andet modul, som vi har oprettet (Pone.vhd). Dette skiftregister får lysdioderne til at lyse som en stigende effektmåler ville gøre i andre spil, og det ville derefter nulstilles til 0, når det når den maksimale mængde lysdioder, der kunne tændes. Det opdaterer om den stigende kant af uret hentet fra barclock.vhd, som er ændret fra en lånt laboratoriefil. Vi fik spillerens bar til at starte fra højre og fyldt op til venstre, fordi spillerens switch også er til venstre (for intuitiv brugeroplevelse). Når kontakten er vendt, går staten videre til spilleren et fradrag, og mængden af LED'er aktive gemmes i et signal.

Stat 3: Spiller et fradrag

Signalet med mængden af LED'er aktive bestemmer mængden af sundhed, der får fradrag. Dette gøres ved at have et andet skiftregister (deductor1.vhd), der i stedet for at øge LED'erne, reducerer dem. Dette formindskes på den stigende kant af et af de div div -moduler, som vi lånte og modificerede (downcounterclock.vhd). Lige da en LED er slukket, fratrækkes et sundhedspunkt fra spiller tos samlede helbred. Hvis spiller i løbet af denne proces når 0 sundhed, stopper vi og går straks videre til tilstanden "Game over". Ellers, når LED -vektoren når "0000000000000000", går vi videre til spiller to's tur.

Stat 4: Spiller to's tur

Spiller tos tur er præcis som spillerens tur, undtagen at skifteregistret for det (Ptwo.bhd) går fra venstre mod højre, og kontakten er på højre side af brættet. Et signal aktiveres for at have Player 1's sundhedsvisning. Når switch 2 er aktiv, går dette videre til spiller tos fradragsvending.

Trin 5: Spiller to -fradrag

Ligesom spiller tos tur fungerer spiller to fradrag meget som spiller et fradrag. Den største forskel er, at skiftregistret, der styrer LED'ens slukning, går i den modsatte retning, hvilket er en let ændring at foretage, når du har spillerens fradrag, der fungerer korrekt.

Fase 6: Game Over Hvis nogen spiller på et tidspunkt når nul sundhed, skifter spillet til denne tilstand. Intet fancy displays. Hvis der trykkes på BTN one, nulstilles helbredet til 99, og staten går tilbage til menuen og starter effektivt spillet forfra.

Sort kasse

Trin 4: Moduler

Downcounterclock (baseret på clk_div.vhd -modulet af Bryan Mealy):

Dette er uret, der håndterer timingen af fradragsholderne. Konstanten, der hedder max_count, er 3x mere end barclocks max_count -konstant. Dette vil gøre fradragsholderne 3x langsommere end barens hastighed.

Barclock - (baseret på clk_div.vhd -modulet af Bryan Mealy): Dette ur håndterer timingen af effektmålere, som vi hurtigt øgede for at tilføre spillet vanskeligheder. Denne timing kan justeres efter din smag, øge hastigheden ved at gøre den konstante max_count til et større tal eller reducere den ved at gøre max_count til et mindre tal. Sseg_dec - (Skrevet af Bryan Mealy): Dette modul tager et 8 bit nummer som input, som det afkoder, konverterer tallet til dets decimalækvivalent og sender derefter ud til syv segment display. For at denne fil fungerer, skal du sikre dig, at dine begrænsninger matcher vores.

Pone: Dette er et skiftregister, der flytter bits til venstre og tilføjer en hot bit for at få det til at ligne, at effektmåleren stiger. Når alle bitene er varme, nulstilles alle bits til '0', og cyklussen starter forfra.

Ptwo: Dette er en vendt version af P1 -modulet.

Deductor1: Dette er en kombination af et skiftregister og en subtraktor. Skiftregistret går i den modsatte retning af P1’s skifteregister, hvilket angiver et fradrag. Dette fratrækker også 1 fra spiller 2's helbred for hver urcyklus, så med kombinationen af disse to funktioner ser det ud til, at modstanderens helbred falder med 1 for hver led i sundhedslinjen, der går ned.

Deductor2: Dette er en vendt version af Deductor1 -modulet.

PlayDecoder (lånt og lidt modificeret fra ekchen35649 hans 133 instruerbare):

Dette bruges i menutilstanden til at vise ordet "PLAY" på dekoderen med syv segmenter.

At gøre: billeder, video

Anbefalede: