Obsah:

Konkurenční hra pro 2 hráče VS: 4 kroky
Konkurenční hra pro 2 hráče VS: 4 kroky

Video: Konkurenční hra pro 2 hráče VS: 4 kroky

Video: Konkurenční hra pro 2 hráče VS: 4 kroky
Video: LEPŠÍ HRA NEŽ ETS 2???/On The Road CZ/SK/První dojmy 2024, Červenec
Anonim
Konkurenční hra pro 2 hráče proti načasování
Konkurenční hra pro 2 hráče proti načasování

Budete potřebovat:

1. Digilent Basys 3, FPGA Board (nebo jakýkoli jiný FPGA,)

2. Relativně aktuální verze Vivado nebo jiného prostředí VHDL

3. Počítač, na kterém je možné spustit zmíněný program.

Krok 1: Samotná hra

Samotná hra
Samotná hra

Jak FSM interaguje s moduly.

Jak hrát

Chcete -li začít, stiskněte prostřední tlačítko. To způsobí, že se na sedmisegmentovém displeji zobrazí „99“, což představuje zdraví hráče dva. Poté se LED diody rozsvítí postupně zprava doleva. To tvoří power bar. Jakmile je napájecí lišta plná, resetuje se. Cílem hráče je přepnout spínač, pokud je laťka co nejvyšší. Čím více LED diod svítí, tím větší poškození hráč udělá hráči dva. Poté, co hráč jeden přepne přepínač, způsobené poškození se odečte ze zdraví hráče dva. Poté se přepne na tah hráče dva. Nyní zobrazené číslo představuje zdraví hráče a napájecí lišta se plní zleva doprava. Jakmile hráč dva udělá svůj tah, poškození se odečte a je opět na tahu hráče. To se opakuje, dokud jeden hráč nedosáhne 0 zdraví. Video z tohoto fungování je přiloženo.

Krok 2: FSM

FSM
FSM
FSM
FSM
FSM
FSM
FSM
FSM

Tato hra je v podstatě jedním velkým strojem konečných stavů, který se skládá ze složité logiky na základě stavu, ve kterém je FSM.

Stav 1: Nabídka První stav je obrazovka nabídky, což je jeden z jednodušších stavů. Obsahuje sedmisegmentový displej zobrazující slovo „PLAY“a tlačítko, které způsobuje spuštění hry. Tlačítko BTN nás vede do dalšího stavu, který je na řadě.

Stav 2: Na tahu hráče

Na tahu hráče aktivuje signál, který způsobí, že sedmisegmentový displej zobrazí zdraví hráče dva. Zapne se další signál, aby se aktivoval posuvný registr importovaný z jiného modulu, který jsme vytvořili (Pone.vhd). Tento posuvný registr rozsvítí LED diodu stejně jako v ostatních hrách rostoucí ukazatel výkonu a poté se resetuje na 0, když dosáhne maximálního počtu LED, které lze rozsvítit. Aktualizuje se na náběžné hraně hodin získaných ze souboru barclock.vhd, který je upraven z vypůjčeného laboratorního souboru. Měli jsme lištu hráče na začátku zprava a vyplnění doleva, protože přepínač hráče je také vlevo (pro intuitivní uživatelské prostředí). Jakmile je přepínač otočen, stav přejde k odečtení jednoho hráče a množství aktivních LED se uloží do signálu.

Stav 3: Odpočet hráče Jeden signál s počtem aktivních LED určuje množství zdraví, které se odečte. To se provádí tak, že máte jiný posuvný registr (deductor1.vhd), který LED diody spíše než inkrementuje, ale naopak snižuje. To klesá na stoupající hraně jednoho z modulů hodinového divu, které jsme si vypůjčili a upravili (downcounterclock.vhd). Právě když je jedna LED vypnutá, je z celkového zdraví hráče dva odečten jeden bod zdraví. Pokud během tohoto procesu hráč dva dosáhne 0 zdraví, zastavíme se a okamžitě přejdeme do stavu „Game over“. Jinak, jakmile LED dioda dosáhne „000000000000000000“, přejdeme na řadu dva.

Stát 4: Na tahu hráče dva je tah hráče dva přesně na řadě, kromě toho, že posuvný registr pro něj (Ptwo.bhd) jde zleva doprava a přepínač je na pravé straně desky. Aktivuje se signál pro zobrazení zdraví hráče 1. Jakmile je přepínač 2 aktivní, přejde se do odpočítávacího kola hráče dva.

Fáze 5: Odpočet hráče dva Stejně jako na řadě hráče dva, odpočet hráče dva funguje hodně jako odpočet hráče jeden. Hlavní rozdíl je v tom, že posuvný registr, který ovládá vypínání LED diod, jde opačným směrem, což je snadná úprava, jakmile má odpočet hráče správně fungovat.

Fáze 6: Konec hry Pokud některý z hráčů v kterémkoli bodě dosáhne nulového zdraví, hra se přepne do tohoto stavu. Nic efektního se nezobrazuje. Pokud je stisknuto BTN, stav se resetuje na 99 a stav se vrátí do nabídky, čímž hra skutečně začíná.

Krok 3: Moduly

Moduly
Moduly

Black Box Diagram pro hru

Dolní počítadlo hodin (na základě modulu clk_div.vhd od Bryana Mealyho):

Toto jsou hodiny, které zpracovávají načasování deduktorů. Konstanta pojmenovaná max_count je 3krát větší než konstanta max_count barclock. Díky tomu budou deduktory 3x pomalejší než rychlost tyče.

Barclock - (na základě modulu clk_div.vhd od Bryana Mealyho):

Tyto hodiny zvládají načasování měřičů výkonu, které jsme rychle přidali, aby byla hra obtížnější. Toto načasování lze upravit podle vašich představ, zvýšit rychlost tím, že z konstantního max_count vytvoříte větší číslo, nebo jej snížíte tak, že z max_count vytvoříte menší číslo. Sseg_dec - (Napsal Bryan Mealy): Tento modul bere jako vstup 8bitové číslo, které dekóduje, převede číslo na jeho desítkový ekvivalent a poté vyvede na sedmisegmentový displej. Aby tento soubor fungoval, musíte se ujistit, že se vaše omezení shodují s našimi.

Pone:

Toto je posuvný registr, který posouvá bity doleva a přidává jeden horký bit, aby to vypadalo, že se měřič výkonu zvyšuje. Když jsou všechny bity horké, všechny bity se resetují na „0“a cyklus začíná znovu.

Ptwo:

Toto je převrácená verze modulu P1.

Deduktor1:

Jedná se o kombinaci posuvného registru a odečítače. Posuvný registr jde opačným směrem než posuvný registr P1, což naznačuje odpočet. To také odečte 1 od zdraví hráče 2 pro každý hodinový cyklus, takže s kombinací těchto dvou funkcí to bude vypadat, že zdraví protivníka klesá o 1 pro každou LED diody zdraví, která klesá.

Deductor2: Toto je převrácená verze modulu Deductor1.

PlayDecoder (vypůjčený a slagihtly upravený z ekchen35649 jeho 133 instrukovatelných): Toto se používá ve stavu nabídky k zobrazení slova „PLAY“na sedmisegmentovém dekodéru.

Krok 4: Test

Tato hra byla původně inspirována jednou z miniher od Kirbyho. Je to jednoduchá hra pro dva hráče, kterou lze hrát na desce Basys 3 nebo na libovolném FPGA.

Krok 1: Požadované materiály

Budete potřebovat: Digilent Basys 3, FPGA Board (nebo jakýkoli jiný) Relativně aktuální verzi Vivado nebo nějaké jiné prostředí vhdl Počítač, na kterém lze spustit zmíněný program Mozek

Krok 2: Samotná hra

Jak hrát

Chcete -li začít, stiskněte prostřední tlačítko. To způsobí, že se na sedmisegmentovém displeji zobrazí „99“, představující zdraví hráče dva. Poté se LED diody rozsvítí postupně zprava doleva. To tvoří power bar. Jakmile je napájecí lišta plná, resetuje se. Cílem hráče je přepnout spínač, pokud je laťka co nejvyšší. Čím více LED diod svítí, tím větší poškození hráč udělá hráči dva. Poté, co hráč jeden přepne přepínač, způsobené poškození se odečte ze zdraví hráče dva. Poté se přepne na tah hráče dva. Nyní zobrazené číslo představuje zdraví hráče a napájecí lišta se plní zleva doprava. Jakmile hráč dva udělá svůj tah, poškození se odečte a je opět na tahu hráče. To se opakuje, dokud jeden hráč nedosáhne 0 zdraví. Video z tohoto fungování je přiloženo.

Chcete -li hru hrát, nahrajte ji na základní desku a stiskněte prostřední tlačítko. Zkuste přepnout přepínač s co největším počtem aktivních LED diod a poté počkejte a sledujte, jak deska odečte tyto body ze zdraví vašeho protivníka. Poté jej předejte svému příteli a

Krok 3: FSM

Tato hra je v podstatě jedním velkým strojem konečných stavů, který se skládá ze složité logiky na základě stavu, ve kterém je FSM.

(Stavový diagram)

Stav 1: Nabídka

Prvním stavem je obrazovka nabídky, což je jeden z jednodušších stavů. Obsahuje sedmisegmentový displej zobrazující slovo „PLAY“a tlačítko, které způsobuje spuštění hry. Tlačítko BTN nás vede do dalšího stavu, který je na řadě.

Stav 2: Na tahu hráče

Na tahu hráče aktivuje signál, který způsobí, že sedmisegmentový displej zobrazí zdraví hráče dva. Zapne se další signál, aby se aktivoval posuvný registr importovaný z jiného modulu, který jsme vytvořili (Pone.vhd). Tento posuvný registr rozsvítí LED diodu stejně jako v ostatních hrách rostoucí indikátor výkonu a poté se resetuje na 0, když dosáhne maximálního počtu LED, které lze rozsvítit. Aktualizuje se na náběžné hraně hodin získaných ze souboru barclock.vhd, který je upraven z vypůjčeného laboratorního souboru. Měli jsme lištu hráče na začátku zprava a vyplnění doleva, protože přepínač hráče je také vlevo (pro intuitivní uživatelské prostředí). Jakmile je přepínač otočen, stav přejde k odečtení jednoho hráče a množství aktivních LED se uloží do signálu.

Stát 3: Odpočet hráče jedna

Signál s množstvím aktivních LED určuje množství zdraví, které se odečte. To se provádí tak, že máte jiný posuvný registr (deductor1.vhd), který LED diody spíše než inkrementuje, ale naopak snižuje. To se snižuje na náběžné hraně jednoho z modulů hodinového divu, které jsme si vypůjčili a upravili (downcounterclock.vhd). Právě když je jedna LED vypnutá, je jeden bod zdraví odečten z celkového zdraví hráče dva. Pokud během tohoto procesu hráč dva dosáhne 0 zdraví, zastavíme se a okamžitě přejdeme do stavu „Game over“. Jinak, jakmile LED dioda dosáhne „000000000000000000“, přejdeme na řadu dva.

Stav 4: Na tahu hráče dva

Tah hráče dva je přesně jako tah hráče, kromě toho, že posuvný registr (Ptwo.bhd) jde zleva doprava a přepínač je na pravé straně desky. Aktivuje se signál pro zobrazení zdraví hráče 1. Jakmile je přepínač 2 aktivní, přejde se do odpočítávacího kola hráče dva.

Fáze 5: Odpočet hráče dva

Stejně jako tah hráče dva, odpočet hráče dva funguje hodně jako odpočet hráče jeden. Hlavní rozdíl je v tom, že posuvný registr, který ovládá vypínání LED diod, jde opačným směrem, což je snadná modifikace, kterou provedete, až bude odpočet hráče správně fungovat.

Fáze 6: Konec hry Pokud některý z hráčů v kterémkoli bodě dosáhne nulového zdraví, hra se přepne do tohoto stavu. Nic efektního se nezobrazuje. Pokud stisknete BTN, stav se resetuje na 99 a stav se vrátí zpět do nabídky, čímž hra skutečně začíná.

Černá skříňka

Krok 4: Moduly

Dolní počítadlo hodin (na základě modulu clk_div.vhd od Bryana Mealyho):

Toto jsou hodiny, které zpracovávají načasování deduktorů. Konstanta pojmenovaná max_count je 3krát větší než konstanta max_count barclock. Díky tomu budou deduktory 3x pomalejší než rychlost tyče.

Barclock - (na základě modulu clk_div.vhd od Bryana Mealyho): Tyto hodiny zpracovávají načasování měřičů výkonu, které jsme rychle zvýšili, abychom hře přidali na obtížnosti. Toto načasování lze upravit podle vašich představ, zvýšit rychlost tím, že z konstantního max_count vytvoříte větší číslo, nebo jej snížíte tak, že z max_count vytvoříte menší číslo. Sseg_dec - (Napsal Bryan Mealy): Tento modul bere jako vstup 8bitové číslo, které dekóduje, převede číslo na jeho desítkový ekvivalent a poté vyvede na sedmisegmentový displej. Aby tento soubor fungoval, musíte se ujistit, že se vaše omezení shodují s našimi.

Pone: Toto je posuvný registr, který posouvá bity doleva a přidává jeden horký bit, aby to vypadalo, že se ukazatel výkonu zvyšuje. Když jsou všechny bity horké, všechny bity se resetují na „0“a cyklus začíná znovu.

Ptwo: Toto je převrácená verze modulu P1.

Deductor1: Jedná se o kombinaci posuvného registru a odečítače. Posuvný registr jde opačným směrem než posuvný registr P1, což naznačuje odpočet. To také odečte 1 od zdraví hráče 2 pro každý hodinový cyklus, takže s kombinací těchto dvou funkcí to bude vypadat, že zdraví protivníka klesá o 1 pro každou LED diody zdraví, která klesá.

Deductor2: Toto je převrácená verze modulu Deductor1.

PlayDecoder (vypůjčeno a mírně upraveno z ekchen35649 jeho 133 instrukčních):

Toto se používá ve stavu nabídky k zobrazení slova „PLAY“na sedmisegmentovém dekodéru.

Úkol: obrázky, video

Doporučuje: