Kazalo:

Tekmovalna tekma za 2 igralca VS: 4 koraki
Tekmovalna tekma za 2 igralca VS: 4 koraki

Video: Tekmovalna tekma za 2 igralca VS: 4 koraki

Video: Tekmovalna tekma za 2 igralca VS: 4 koraki
Video: ПОЧЕМУ Я ЖДУ L4D3 2024, Julij
Anonim
Tekmovalna igra za tekmovalce VS za 2 igralca
Tekmovalna igra za tekmovalce VS za 2 igralca

Boste potrebovali:

1. Digilent Basys 3, plošča FPGA (ali katera koli druga FPGA,)

2. Relativno posodobljena različica Vivada ali kakšnega drugega okolja VHDL

3. Računalnik, ki lahko zažene omenjeni program.

1. korak: Igra sama

Igra sama
Igra sama

Kako FSM sodeluje z moduli.

Kako igrati

Za začetek pritisnite srednji gumb. To bo povzročilo, da se na sedemsegmentnem zaslonu prikaže "99", ki predstavlja zdravje igralca dva. Nato bodo LED zasvetile zaporedno od desne proti levi. To tvori napajalno palico. Ko je polnilnik poln, se ponastavi. Cilj igralca ena je, da obrne stikalo, ko je črta čim višja. Več kot sveti LED, več škode naredi igralec drugemu igralcu. Ko igralec prvi premakne stikalo, se povzročena škoda odšteje od zdravja igralca drugega. Nato preide na vrsto igralca dva. Zdaj prikazana številka prikazuje zdravje igralca, vrstica za vklop se napolni od leve proti desni. Ko igralec dva naredi svoj korak, se škoda odšteje in spet je na vrsti igralec. To se ponavlja, dokler en igralec ne doseže 0 zdravja. Videoposnetek tega delovanja je priložen.

2. korak: FSM

FSM
FSM
FSM
FSM
FSM
FSM
FSM
FSM

Ta igra je v bistvu en velik končni stroj, v katerem se dogaja neka zapletena logika, ki temelji na stanju, v katerem je FSM.

Stanje 1: Meni Prvo stanje je zaslon menija, ki je eno enostavnejših stanj. Vključuje sedem segmentni zaslon, ki prikazuje besedo »PLAY«, in gumb, ki povzroči začetek igre. Gumb BTN nas pripelje do naslednjega stanja, ki je na vrsti za igralca.

2. stanje: Na vrsti je prvi igralec

Na vrsti igralec aktivira signal, ki povzroči, da sedemsegmentni zaslon prikazuje zdravje igralca dva. Vklopi se še en signal za aktiviranje registra premikov, uvoženega iz drugega modula, ki smo ga ustvarili (Pone.vhd). Ta premični register povzroči, da LED zasveti tako, kot bi se v drugih igrah povečeval merilnik moči, nato pa bi se ponastavil na 0, ko doseže največjo količino LED, ki bi jo lahko prižgali. Posodablja se o naraščajočem robu ure, pridobljenem iz barclock.vhd, ki je spremenjen iz izposojene laboratorijske datoteke. Imeli smo igralčevo palico, ki se je začela z desne strani in zapolnila do leve, ker je stikalo igralca tudi na levi (za intuitivno uporabniško izkušnjo). Ko je stikalo obrnjeno, se stanje premakne na odbitek enega igralca in količina aktivne LED diode se shrani v signal.

Stanje 3: Odbitek enega igralca Signal z količino aktivne LED diode določa količino zdravja, ki se odšteje. To naredimo tako, da imamo drug premični register (deductor1.vhd), ki namesto da bi povečal LED, jih zmanjšal. To zmanjšuje naraščajoči rob enega od modulov ur div, ki smo si ga sposodili in spremenili (downcounterclock.vhd). Ko je ena LED izklopljena, se ena točka zdravja odšteje od celotnega zdravja igralca dva. Če med tem procesom igralec dva doseže 0 zdravja, se ustavimo in takoj preidemo v stanje »Game over«. V nasprotnem primeru, ko LED vektor doseže "0000000000000000", preidemo na potezo igralca dva.

Stanje 4: Zavoj igralca dva Zaigra igralca dva je popolnoma enak potezi igralca enega, le da se premični register zanj (Ptwo.bhd) premika od leve proti desni, stikalo pa je na desni strani deske. Aktivira se signal za prikaz stanja zdravja igralca 1. Ko je stikalo 2 aktivno, se to premakne na odbitni obrat igralca dva.

5. stopnja: Odbitek za drugega igralca Tako kot na vrsti za drugega igralca drugi odbitek deluje podobno kot odbitni igralec prvega igralca. Glavna razlika je v tem, da premični register, ki nadzoruje izklop LED, gre v nasprotni smeri, kar je enostavno spremeniti, ko igralec pravilno odšteje.

Korak 6: Konec igre Če igralec kadar koli doseže nič, se igra preklopi v to stanje. Nič lepega prikaza. Če pritisnete tipko BTN one, se stanje povrne na 99, stanje pa se vrne v meni, s čimer se igra začne znova.

3. korak: moduli

Moduli
Moduli

Diagram črne škatle za igro

Spodnja ura (na podlagi modula clk_div.vhd avtorja Bryana Mealyja):

To je ura, ki upravlja čas odbitkov. Konstanta z imenom max_count je 3x večja od konstante max_count barclock. Tako bodo odbitki 3x počasnejši od hitrosti palice.

Barclock - (na podlagi modula clk_div.vhd avtorja Bryan Mealy):

Ta ura obravnava časovni razpored merilnikov moči, ki smo jih hitro povečali, da bi igri dodali težave. Ta čas lahko prilagodite po svojih željah, povečate hitrost tako, da konstanto max_count povečate ali zmanjšate, tako da max_count postane manjše število. Sseg_dec - (Napisal Bryan Mealy): Ta modul za vnos vzame 8 -bitno število, ki ga dekodira, pretvori število v decimalni ekvivalent in nato izpiše na zaslon s sedmimi segmenti. Če želite, da ta datoteka deluje, se prepričajte, da se vaše omejitve ujemajo z našimi.

Ponedeljek:

To je premični register, ki premakne bite v levo in doda en vroč bit, da bo videti, kot da se merilnik moči povečuje. Ko so vsi biti vroči, se vsi biti ponastavijo na '0' in cikel se začne znova.

Ptwo:

To je obrnjena različica modula P1.

Odvodnik1:

To je kombinacija registra premikov in odštevalnika. Register premikov gre v nasprotni smeri registra premikov P1, kar kaže na odbitek. To tudi odšteje 1 od zdravja igralca 2 za vsak cikel ure, zato bo s kombinacijo teh dveh funkcij videti, da se zdravje nasprotnika zmanjšuje za 1 za vsak led zdravstvene vrstice, ki se zniža.

Deductor2: To je obrnjena različica modula Deductor1.

PlayDecoder (izposojeno in slgihtly spremenjeno iz ekchen35649 njegovih 133 navodil): To se uporablja v stanju menija za prikaz besede »PLAY« na sedemsegmentnem dekoderju.

4. korak: Preizkusite

To igro je prvotno navdihnila ena od mini iger iz Kirbyja. To je preprosta igra za dva igralca, ki jo lahko igrate na deski Basys 3 ali kateri koli FPGA.

1. korak: Potrebni materiali

Potrebovali boste: Digilent Basys 3, ploščo FPGA (ali katero koli drugo) Relativno posodobljeno različico Vivada ali kakšno drugo okolje vhdl Računalnik, ki lahko izvaja omenjeni program A možgani

2. korak: Igra sama

Kako igrati

Za začetek pritisnite srednji gumb. To bo povzročilo, da se na sedemsegmentnem zaslonu prikaže "99", ki predstavlja zdravje igralca dva. Nato bodo LED zasvetile zaporedno od desne proti levi. To tvori napajalno palico. Ko je polnilnik poln, se ponastavi. Cilj igralca ena je, da obrne stikalo, ko je črta čim višja. Več kot sveti LED, več škode naredi igralec drugemu igralcu. Ko igralec prvi premakne stikalo, se povzročena škoda odšteje od zdravja igralca drugega. Nato preide na vrsto igralca dva. Zdaj prikazana številka prikazuje zdravje igralca, vrstica za vklop se polni od leve proti desni. Ko igralec dva naredi svoj korak, se škoda odšteje in spet je na vrsti igralec. To se ponavlja, dokler en igralec ne doseže 0 zdravja. Videoposnetek tega delovanja je priložen.

Če želite igrati igro, jo naložite na basys desko in pritisnite srednji gumb. Poskusite obrniti stikalo s čim več aktivnimi LED diodami, nato pa počakajte in opazujte, kako deska odšteje te točke od zdravja vašega nasprotnika. Nato ga posredujte prijatelju in

3. korak: FSM

Ta igra je v bistvu en velik končni stroj, v katerem se dogaja neka zapletena logika, ki temelji na stanju, v katerem je FSM.

(Diagram stanja)

Stanje 1: Meni

Prvo stanje je zaslon menija, ki je eno enostavnejših stanj. Vključuje sedem segmentni zaslon, ki prikazuje besedo »PLAY«, in gumb, ki povzroči začetek igre. Gumb BTN nas pripelje do naslednjega stanja, ki je na vrsti za igralca.

2. stanje: Na vrsti je prvi igralec

Igralec na vrsti aktivira signal, ki povzroči, da sedemsegmentni zaslon prikazuje zdravje igralca dva. Vklopi se še en signal za aktiviranje registra premikov, uvoženega iz drugega modula, ki smo ga ustvarili (Pone.vhd). Ta premični register povzroči, da LED zasveti tako, kot bi se v drugih igrah povečeval merilnik moči, nato pa bi se ponastavil na 0, ko doseže največjo količino LED, ki bi jo lahko prižgali. Posodablja se o naraščajočem robu ure, pridobljenem iz barclock.vhd, ki je spremenjen iz izposojene laboratorijske datoteke. Vrstica igralca ena se je začela z desne strani in napolnila do leve, ker je stikalo igralca tudi na levi (za intuitivno uporabniško izkušnjo). Ko je stikalo obrnjeno, se stanje premakne na odbitek enega igralca in količina aktivne LED diode se shrani v signal.

Stanje 3: Igralec ena odšteje

Signal s količino aktivne LED diode določa količino zdravja, ki se odšteje. To naredimo tako, da imamo drug premični register (deductor1.vhd), ki namesto povečuje LED, jih zmanjšuje. To zmanjšuje naraščajoči rob enega od modulov ur div, ki smo si ga sposodili in spremenili (downcounterclock.vhd). Ko je ena LED izklopljena, se ena točka zdravja odšteje od celotnega zdravja igralca dva. Če med tem procesom igralec dva doseže 0 zdravja, se ustavimo in takoj preidemo v stanje »Game over«. V nasprotnem primeru, ko LED vektor doseže "0000000000000000", preidemo na potezo igralca dva.

Stanje 4: Na vrsti je igralec dva

Zavoj igralca dva je popolnoma enak potezi igralca enega, le da premični register zanj (Ptwo.bhd) gre od leve proti desni, stikalo pa je na desni strani deske. Aktivira se signal za prikaz stanja zdravja igralca 1. Ko je stikalo 2 aktivno, se to premakne na odbitni obrat igralca dva.

5. stopnja: Odbitek za drugega igralca

Tako kot na vrsti igralec dva, igralec dva odbija zelo podobno odbitku igralca enega. Glavna razlika je v tem, da premični register, ki nadzoruje izklop LED, gre v nasprotni smeri, kar je enostavno spremeniti, ko igralec pravilno odšteje.

Korak 6: Konec igre Če igralec kadar koli doseže nič, se igra preklopi v to stanje. Nič lepega prikaza. Če pritisnete tipko BTN one, se stanje povrne na 99, stanje pa se vrne v meni, s čimer se igra začne znova.

Črna škatla

4. korak: moduli

Spodnja ura (na podlagi modula clk_div.vhd avtorja Bryana Mealyja):

To je ura, ki upravlja čas odbitkov. Konstanta z imenom max_count je 3x večja od konstante max_count barclock. Tako bodo odbitki 3x počasnejši od hitrosti palice.

Barclock - (na podlagi modula clk_div.vhd avtorja Bryana Mealyja): Ta ura obravnava časovni razpored merilnikov moči, ki smo jih hitro povečali, da bi igri dodali težave. Ta čas lahko prilagodite po svojih željah, povečate hitrost tako, da konstanto max_count povečate ali zmanjšate, tako da max_count postane manjše število. Sseg_dec - (Napisal Bryan Mealy): Ta modul za vnos vzame 8 -bitno število, ki ga dekodira, pretvori število v decimalni ekvivalent in nato izpiše na zaslon s sedmimi segmenti. Če želite, da ta datoteka deluje, se prepričajte, da se vaše omejitve ujemajo z našimi.

Pone: To je premični register, ki premakne bitove v levo in doda en vroč bit, da bo videti, kot da se merilnik moči povečuje. Ko so vsi biti vroči, se vsi biti ponastavijo na '0' in cikel se začne znova.

Ptwo: To je obrnjena različica modula P1.

Deductor1: To je kombinacija premičnega registra in odštevalnika. Register premikov gre v nasprotni smeri registra premikov P1 in označuje odbitek. To tudi odšteje 1 od zdravja igralca 2 za vsak cikel ure, tako da bo s kombinacijo teh dveh funkcij videti, da se zdravje nasprotnika zmanjšuje za 1 za vsako vodilo zdravstvene vrstice, ki se zniža.

Deductor2: To je obrnjena različica modula Deductor1.

PlayDecoder (izposojeno in nekoliko spremenjeno iz ekchen35649 njegovih 133 navodil):

To se uporablja v stanju menija za prikaz besede »PLAY« na sedemsegmentnem dekoderju.

Naloge: slike, video

Priporočena: