Obsah:

Konkurenčná hra pre 2 hráčov proti VS: 4 kroky
Konkurenčná hra pre 2 hráčov proti VS: 4 kroky

Video: Konkurenčná hra pre 2 hráčov proti VS: 4 kroky

Video: Konkurenčná hra pre 2 hráčov proti VS: 4 kroky
Video: КАК НАСТРОИТЬ L4D2 2024, Júl
Anonim
Konkurenčná hra s načasovaním pre 2 hráčov
Konkurenčná hra s načasovaním pre 2 hráčov

Budete potrebovať:

1. Digilent Basys 3, doska FPGA (alebo akákoľvek iná FPGA,)

2. Relatívne aktuálna verzia Vivado alebo iného prostredia VHDL

3. Počítač, na ktorom je možné spustiť spomínaný program.

Krok 1: Samotná hra

Samotná hra
Samotná hra

Ako FSM interaguje s modulmi.

Ako hrať

Ak chcete začať, stlačte stredné tlačidlo. To spôsobí, že sa na sedemsegmentovom displeji zobrazí „99“, čo predstavuje zdravie hráča dvoch. Potom sa diódy LED rozsvietia postupne sprava doľava. To tvorí silový pruh. Akonáhle je panel napájania plný, resetuje sa. Cieľom hráča je prepnúť vypínač, pokiaľ je latka čo najvyššia. Čím viac diód LED svieti, tým viac hráč poškodí hráča dvoch. Potom, čo hráč jeden prepne spínač, spôsobená škoda sa odpočíta zo zdravia hráča dva. Potom sa prepne na rad hráčov dvoch. Teraz zobrazené číslo predstavuje zdravie hráča a panel napájania sa plní zľava doprava. Akonáhle hráč dva urobí svoj pohyb, škoda sa odpočíta a je opäť na rade. Toto sa opakuje, kým jeden hráč nedosiahne 0 zdravia. Video z tohto fungovania je priložené.

Krok 2: FSM

FSM
FSM
FSM
FSM
FSM
FSM
FSM
FSM

Táto hra je v podstate jedným veľkým strojom konečných stavov, ktorého komplexná logika sa deje na základe stavu, v ktorom sa nachádza FSM.

Stav 1: Menu Prvým stavom je obrazovka ponuky, ktorá je jedným z jednoduchších stavov. Obsahuje sedemsegmentový displej so slovom „PLAY“a tlačidlo, ktoré spôsobuje spustenie hry. Tlačidlo BTN nás zavedie do nasledujúceho stavu, v ktorom je hráč na rade.

Stav 2: Hráč je na rade

Na ťahu hráča je aktivovaný signál, ktorý spôsobí, že sedemsegmentový displej zobrazuje zdravie hráča dva. Zapne sa ďalší signál, aby sa aktivoval posuvný register importovaný z iného modulu, ktorý sme vytvorili (Pone.vhd). Tento posuvný register rozsvieti LED diódy ako zvyšujúci sa ukazovateľ výkonu v iných hrách a potom sa resetuje na 0, keď dosiahne maximálny počet LED, ktoré môžu svietiť. Aktualizuje sa na stúpajúcej hrane hodín získaných zo súboru barclock.vhd, ktorý je upravený z vypožičaného laboratórneho súboru. Lišta prehrávača jedného začínala sprava a vyplnila sa doľava, pretože prepínač prehrávača je tiež vľavo (kvôli intuitívnemu používateľskému zážitku). Akonáhle je prepínač prepnutý, stav prejde na jeden odpočet pre hráča a množstvo aktívnych diód LED sa uloží do signálu.

Stav 3: Odpočítanie jedného hráča Signál s počtom aktívnych diód LED určuje množstvo zdravia, ktoré sa odpočíta. To sa dosiahne tým, že je k dispozícii ďalší posuvný register (deductor1.vhd), ktorý diódy LED nezvyšuje, ale znižuje. Toto sa znižuje na stúpajúcej hrane jedného z modulov hodinových divov, ktoré sme si požičali a upravili (downcounterclock.vhd). Hneď ako je jedna LED dióda vypnutá, jeden bod zdravia sa odpočíta z celkového zdravia hráča dva. Ak počas tohto procesu hráč dva dosiahne 0 zdravia, zastavíme a okamžite prejdeme do stavu „Koniec hry“. V opačnom prípade, akonáhle vektor LED dosiahne „000000000000000000“, prejdeme na rad hráčov dva.

Stav 4: Poradie dvoch hráčov je na rade, rovnako ako ťah hráča, ibaže posuvný register (Ptwo.bhd) ide zľava doprava a prepínač je na pravej strane dosky. Aktivuje sa signál, aby sa zobrazil zdravotný stav hráča 1. Hneď ako je spínač 2 aktívny, prejde na odpočetový ťah hráča dva.

Fáza 5: Odpočítanie hráča dva Rovnako ako je na rade hráč dva, odpočítanie dvoch hráčov funguje podobne ako odpočítanie jedného hráča. Hlavný rozdiel je v tom, že posuvný register, ktorý riadi vypínanie diód LED, smeruje opačným smerom, čo je jednoduchú úpravu, keď už odpočítavač hráča funguje správne.

Fáza 6: Hra končí Ak niektorý z hráčov v ktoromkoľvek bode dosiahne nulové zdravie, hra sa prepne do tohto stavu. Nič fantastické. Ak stlačíte BTN, stav sa resetuje na 99 a stav sa vráti do ponuky, čím sa hra prakticky skončí.

Krok 3: Moduly

Moduly
Moduly

Schéma čiernej skrinky pre hru

Dolné hodiny (na základe modulu clk_div.vhd od Bryana Mealyho):

Toto sú hodiny, ktoré zvládajú načasovanie deduktorov. Konštanta s názvom max_count je 3x viac ako konštanta max_count pre barclock. Vďaka tomu budú deduktory 3x pomalšie ako rýchlosť tyče.

Barclock - (založené na module clk_div.vhd od Bryana Mealyho):

Tieto hodiny zvládajú načasovanie meradiel výkonu, ktoré sme rýchlo zvýšili, aby hra bola náročnejšia. Toto načasovanie je možné prispôsobiť vašim predstavám, zvýšiť rýchlosť tak, že z konštantného max_count urobíte väčšie číslo, alebo ho znížite zmenšením max_count na menšie číslo. Sseg_dec - (Napísal Bryan Mealy): Tento modul používa ako vstup 8 -bitové číslo, ktoré dekóduje, prevedie číslo na desatinný ekvivalent a potom ho vydá na sedemsegmentový displej. Aby tento súbor fungoval, musíte sa uistiť, že sa vaše obmedzenia zhodujú s našimi.

Pone:

Toto je posuvný register, ktorý posúva bity doľava a pridáva jeden horúci bit, aby to vyzeralo, že sa merač výkonu zvyšuje. Keď sú všetky bity horúce, všetky bity sa resetujú na „0“a cyklus sa začne odznova.

Ptwo:

Toto je prevrátená verzia modulu P1.

Odvod 1:

Ide o kombináciu posuvného registra a odčítača. Posuvný register ide v opačnom smere ako posuvný register P1, čo naznačuje odpočet. Odpočíta sa tiež 1 od zdravia hráča 2 za každý hodinový cyklus, takže pri kombinácii týchto dvoch funkcií to bude vyzerať tak, že zdravie súpera sa zníži o 1 pre každú diódu indikátora zdravia, ktorá klesá.

Deductor2: Toto je prevrátená verzia modulu Deductor1.

PlayDecoder (požičaný a slabo upravený z ekchen35649 jeho 133 inštrukcií): Toto sa používa v stave ponuky na zobrazenie slova „PLAY“na sedemsegmentovom dekodéri.

Krok 4: Test

Táto hra bola pôvodne inšpirovaná jednou z minihier od Kirbyho. Je to jednoduchá hra pre dvoch hráčov, ktorú je možné hrať na doske Basys 3 alebo na ľubovoľnom FPGA.

Krok 1: Požadovaný materiál

Budete potrebovať: Digilent Basys 3, FPGA Board (alebo akýkoľvek iný) Relatívne aktuálna verzia Vivado, alebo nejaké iné prostredie vhdl Počítač, na ktorom je možné spustiť spomínaný program Mozog

Krok 2: Samotná hra

Ako hrať

Ak chcete začať, stlačte stredné tlačidlo. To spôsobí, že na sedemsegmentovom displeji sa zobrazí „99“, čo predstavuje zdravie hráča dvoch. Potom sa diódy LED rozsvietia postupne sprava doľava. To tvorí silový pruh. Akonáhle je panel napájania plný, resetuje sa. Cieľom hráča je prepnúť vypínač, pokiaľ je latka čo najvyššia. Čím viac diód LED svieti, tým viac hráč poškodí hráča dvoch. Potom, čo hráč jeden prepne spínač, spôsobená škoda sa odpočíta zo zdravia hráča dva. Potom sa prepne na rad hráčov dvoch. Teraz zobrazené číslo predstavuje zdravie hráča a panel napájania sa plní zľava doprava. Akonáhle hráč dva urobí svoj pohyb, škoda sa odpočíta a je opäť na rade. Toto sa opakuje, kým jeden hráč nedosiahne 0 zdravia. Video z tohto fungovania je priložené.

Ak chcete hrať hru, nahrajte ju na základnú dosku a stlačte stredné tlačidlo. Skúste prepnúť prepínač s čo najväčším počtom aktívnych diód LED a potom počkajte a sledujte, ako doska odpočíta tieto body od zdravia vášho súpera. Potom ho odovzdajte svojmu priateľovi a

Krok 3: FSM

Táto hra je v podstate jedným veľkým strojom konečných stavov, ktorého komplexná logika sa deje na základe stavu, v ktorom sa nachádza FSM.

(Stavový diagram)

Stav 1: Menu

Prvým stavom je obrazovka ponuky, ktorá je jedným z jednoduchších stavov. Obsahuje sedemsegmentový displej so slovom „PLAY“a tlačidlo, ktoré spôsobuje spustenie hry. Tlačidlo BTN nás zavedie do nasledujúceho stavu, v ktorom je hráč na rade.

Stav 2: Hráč je na rade

Na ťahu hráča aktivuje signál, ktorý spôsobí, že sedemsegmentový displej zobrazuje zdravie hráča dva. Zapne sa ďalší signál, aby sa aktivoval posuvný register importovaný z iného modulu, ktorý sme vytvorili (Pone.vhd). Tento posuvný register rozsvieti LED diódy ako zvyšujúci sa ukazovateľ výkonu v iných hrách a potom sa resetuje na 0, keď dosiahne maximálny počet LED, ktoré môžu svietiť. Aktualizuje sa na stúpajúcej hrane hodín získaných zo súboru barclock.vhd, ktorý je upravený zo zapožičaného laboratórneho súboru. Lišta prehrávača jedného začínala sprava a vyplnila sa doľava, pretože prepínač prehrávača je tiež vľavo (kvôli intuitívnemu používateľskému zážitku). Akonáhle je prepínač prepnutý, stav prejde na jeden odpočet pre hráča a množstvo aktívnych diód LED sa uloží do signálu.

Stav 3: Odpočítanie hráčovi jeden

Signál s počtom aktívnych LED diód určuje množstvo zdravia, ktoré sa odpočíta. To sa dosiahne tým, že je k dispozícii ďalší posuvný register (deductor1.vhd), ktorý diódy LED nezvyšuje, ale znižuje. Toto sa znižuje na stúpajúcej hrane jedného z modulov hodinových divov, ktoré sme si požičali a upravili (downcounterclock.vhd). Hneď ako je jedna LED dióda vypnutá, jeden bod zdravia sa odpočíta z celkového zdravia hráča dva. Ak počas tohto procesu dosiahne hráč dva 0 zdravia, zastavíme sa a okamžite prejdeme do stavu „Game over“. V opačnom prípade, akonáhle vektor LED dosiahne „000000000000000000“, prejdeme na rad hráčov dva.

Stav 4: Na rade sú hráči dva

Turn druhého hráča je presne taký, ako je hráč jeden, okrem toho, že posuvný register (Ptwo.bhd) ide zľava doprava a prepínač je na pravej strane dosky. Aktivuje sa signál, aby sa zobrazil zdravotný stav hráča 1. Hneď ako je spínač 2 aktívny, prejde na odpočetový ťah hráča dva.

Fáza 5: Odpočítajte hráča dva

Rovnako ako je na rade hráč dva, odpočítanie dvoch hráčov funguje podobne ako odpočet jedného hráča. Hlavný rozdiel je v tom, že posuvný register, ktorý riadi vypínanie diód LED, smeruje opačným smerom, čo je jednoduchú úpravu, keď už odpočítavač hráča funguje správne.

Fáza 6: Hra končí Ak niektorý z hráčov v ktoromkoľvek bode dosiahne nulové zdravie, hra sa prepne do tohto stavu. Nič fantastické. Ak stlačíte BTN, stav sa resetuje na 99 a stav sa vráti do ponuky, čím sa hra prakticky skončí.

Čierna krabica

Krok 4: Moduly

Dolné hodiny (na základe modulu clk_div.vhd od Bryana Mealyho):

Toto sú hodiny, ktoré zvládajú načasovanie deduktorov. Konštanta s názvom max_count je 3 -krát väčšia ako konštanta max_count bar baru. Vďaka tomu budú deduktory 3x pomalšie ako rýchlosť tyče.

Barclock - (založený na module clk_div.vhd od Bryana Mealyho): Tieto hodiny sa starajú o načasovanie meračov výkonu, ktoré sme rýchlo zvýšili, aby sme hre zvýšili obtiažnosť. Toto načasovanie je možné prispôsobiť vašim predstavám, zvýšiť rýchlosť tak, že z konštantného max_count urobíte väčšie číslo, alebo ho znížite zmenšením max_count na menšie číslo. Sseg_dec - (Napísal Bryan Mealy): Tento modul používa ako vstup 8 -bitové číslo, ktoré dekóduje, prevedie číslo na desatinný ekvivalent a potom ho vydá na sedemsegmentový displej. Aby tento súbor fungoval, musíte sa uistiť, že sa vaše obmedzenia zhodujú s našimi.

Pone: Toto je posuvný register, ktorý posúva bity doľava a pridáva jeden horúci bit, aby to vyzeralo, že sa merač výkonu zvyšuje. Keď sú všetky bity horúce, všetky bity sa resetujú na „0“a cyklus sa začne odznova.

Ptwo: Toto je preklopená verzia modulu P1.

Deduktor1: Ide o kombináciu posuvného registra a odčítača. Posuvný register ide v opačnom smere ako posuvný register P1, čo naznačuje odpočet. Odpočíta sa tiež 1 od zdravia hráča 2 pre každý hodinový cyklus, takže pri kombinácii týchto dvoch funkcií to bude vyzerať tak, že zdravie súpera sa zníži o 1 pre každú diódu indikátora zdravia, ktorá klesá.

Deductor2: Toto je prevrátená verzia modulu Deductor1.

PlayDecoder (požičaný a mierne upravený z ekchen35649 jeho 133 inštrukcií):

Toto sa používa v stave ponuky na zobrazenie slova „PLAY“na sedemsegmentovom dekodéri.

Úlohy: obrázky, video

Odporúča: