Sisukord:

Kahe mängija konkurentsivõimeline ajastusmäng: 4 sammu
Kahe mängija konkurentsivõimeline ajastusmäng: 4 sammu

Video: Kahe mängija konkurentsivõimeline ajastusmäng: 4 sammu

Video: Kahe mängija konkurentsivõimeline ajastusmäng: 4 sammu
Video: Riigikogu 15.11.2023 2024, November
Anonim
Kahe mängija konkurentsivõimeline VS ajastusmäng
Kahe mängija konkurentsivõimeline VS ajastusmäng

Sa vajad:

1. Digilent Basys 3, FPGA -plaat (või mõni muu FPGA)

2. Vivado või mõne muu VHDL -keskkonna suhteliselt ajakohane versioon

3. Arvuti, mis oskab nimetatud programmi käitada.

Samm: mäng ise

Mäng ise
Mäng ise

Kuidas Mikroneesia suhelda moodulitega.

Kuidas mängida

Alustamiseks vajutage keskmist nuppu. Selle tulemusel kuvatakse seitsme segmendi ekraanil “99”, mis tähistab teise mängija tervist. Seejärel süttivad LED -id järjest paremalt vasakule. See moodustab võimsusriba. Kui toitenupp on täis, lähtestatakse see. Esimese mängija eesmärk on lüliti ümber pöörata, kui latt on võimalikult kõrge. Mida rohkem LED -e süttib, seda rohkem teeb mängija mängijale kahju. Pärast seda, kui esimene mängija lülitit pöörab, arvatakse tehtud kahju maha teise mängija tervisest. Seejärel lülitub see mängija teisele käigule. Nüüd näitab kuvatav number mängija tervist ja toitenupp täitub vasakult paremale. Kui mängija teine on oma käigu teinud, arvatakse kahju maha ja see on taas mängija kord. Seda korratakse seni, kuni üks mängija saavutab 0 tervise. Selle toimimise video on lisatud.

2. samm: Mikroneesia

Mikroneesia
Mikroneesia
Mikroneesia
Mikroneesia
Mikroneesia
Mikroneesia
Mikroneesia
Mikroneesia

See mäng on sisuliselt üks suur piiratud olekuga masin, milles toimub mingi keeruline loogika, lähtudes olekust, milles Mikroneesia on.

Esimene olek on menüüekraan, mis on üks lihtsamaid olekuid. See sisaldab seitsme segmendi kuva, millel on sõna “PLAY”, ja nuppu, mis paneb mängu käima. Nupp BTN viib meid järgmisesse olekusse, mis on mängija kord.

Olek 2: mängija esimene kord

Mängija esimese kord aktiveerib signaali, mis paneb seitsme segmendi kuva kuvama mängija teise tervise. Teine signaal lülitub sisse, et aktiveerida teisest meie moodulist imporditud vahetusregister (Pone.vhd). See nihkeregister paneb LED -i põlema nagu muudes mängudes suurenev võimsusmõõtur ja seejärel lähtestatakse see 0 -ni, kui see jõuab maksimaalse valgusdioodide hulgani, mida võiks süüdata. See värskendatakse kella tõusvas servas, mis on saadud saidilt barclock.vhd, mida on muudetud laenatud laborifailist. Mängija riba algas paremalt ja täitus vasakule, sest mängija lüliti on samuti vasakul (intuitiivse kasutuskogemuse jaoks). Kui lüliti on pööratud, liigub olek mängijale ühele mahaarvamisele ja aktiivse LED -i kogus salvestatakse signaali.

Olek 3: mängija üks mahaarvamine Signaal, milles on aktiivne valgusdiood, määrab mahaarvatava tervise hulga. Selleks kasutatakse teist vahetuste registrit (deduktor1.vhd), mis LED -ide suurendamise asemel neid vähendab. See väheneb ühe laenatud ja muudetud kella div mooduli tõusvas servas (downcounterclock.vhd). Kui üks LED on välja lülitatud, arvatakse mängija teise tervisest maha üks tervisepunkt. Kui selle protsessi käigus jõuab mängija 2 terviseni 0, peatume ja liigume kohe olekusse „Mäng läbi”. Vastasel juhul, kui LED -vektor jõuab “0000000000000000”, liigume edasi mängija teisele.

Olek 4: Mängija teise kord Mängija teise kord on täpselt nagu mängija esimese kord, välja arvatud selle vahetuste register (Ptwo.bhd) läheb vasakult paremale ja lüliti on laua paremal küljel. Signaal aktiveerub mängija 1 tervise kuvamiseks. Kui lüliti 2 on aktiivne, liigub see teise mängija mahaarvamiskäigule.

5. etapp: mängija teine mahaarvamine Nii nagu mängija teise kord, toimib mängija mahaarvamine sarnaselt mängija ühe mahaarvamisega. Peamine erinevus seisneb selles, et LED -i väljalülitamist reguleeriv vahetusregister läheb vastupidises suunas, mida on lihtne muuta, kui olete mängija mahaarvamise korralikult töötanud.

6. etapp: mäng läbi Kui mõni mängija jõuab mingil hetkel nullini, lülitub mäng sellesse olekusse. Midagi uhket ei kuvata. Kui vajutada nuppu BTN, taastatakse terviseseisund 99 ja olek naaseb menüüsse, alustades mängu tegelikult uuesti.

3. samm: moodulid

Moodulid
Moodulid

Mängu musta kasti skeem

Downcounterclock (Bryan Mealy mooduli clk_div.vhd põhjal):

See on kell, mis tegeleb deduktsioonide ajastamisega. Konstant nimega max_count on 3 korda rohkem kui barclock max_count konstant. See muudab mahaarvamised 3 korda aeglasemaks kui riba kiirus.

Barclock - (põhineb Bryan Mealy moodulil clk_div.vhd):

See kell tegeleb võimsusmõõturite ajastamisega, mida tegime kiiresti juurde, et mängule raskusi tekitada. Seda ajastust saab kohandada oma maitse järgi, suurendades kiirust, muutes konstantse max_count suuremaks või vähendades seda, muutes max_count väiksemaks. Sseg_dec - (Kirjutas Bryan Mealy): see moodul võtab sisendiks 8 -bitise numbri, mille ta dekodeerib, teisendades numbri kümnendkoha ekvivalendiks ja seejärel väljastab seitsme segmendi kuva. Selle faili toimimiseks peate veenduma, et teie piirangud vastavad meie omadele.

Pone:

See on nihkeregister, mis nihutab bitte vasakule, lisades ühe kuuma biti, et näha, nagu võimsusmõõtur suureneb. Kui kõik bitid on kuumad, lähtestatakse kõik bitid väärtusele "0" ja tsükkel algab otsast peale.

Ptwo:

See on P1 mooduli ümberpööratud versioon.

Deductor1:

See on kombinatsioon vahetuste registrist ja lahutajast. Nihkeregister läheb P1 vahetusregistri vastassuunas, näidates mahaarvamist. See lahutab ka mängija 2 tervisest 1 iga tsükli kohta, nii et nende kahe funktsiooni kombinatsiooni korral näib, et vastase tervis väheneb 1 võrra iga langenud terviseriba viite kohta.

Deductor2: See on Deductor1 mooduli ümberpööratud versioon.

PlayDecoder (laenatud ja kiiresti muudetud saidilt ekchen35649 tema 133 juhendatav): Seda kasutatakse menüü olekus sõna “PLAY” kuvamiseks seitsme segmendi dekoodril.

4. samm: testige

See mäng oli algselt inspireeritud ühest Kirby minimängust. See on lihtne kahe mängijaga mäng, mida saab mängida Basys 3 laual või mis tahes FPGA-l.

Samm: vajalikud materjalid

Teil on vaja: Digilent Basys 3, FPGA -plaati (või mõnda muud) Vivado suhteliselt ajakohast versiooni või mõnda muud vhdl -keskkonda Arvuti, mis suudab käivitada nimetatud programmi A aju

2. samm: mäng ise

Kuidas mängida

Alustamiseks vajutage keskmist nuppu. Selle tulemusel kuvatakse seitsme segmendi ekraanil teise mängija tervist tähistav “99”. Seejärel süttivad LED -id järjest paremalt vasakule. See moodustab võimsusriba. Kui toitenupp on täis, lähtestatakse see. Esimese mängija eesmärk on lüliti ümber pöörata, kui latt on võimalikult kõrge. Mida rohkem LED -e süttib, seda rohkem teeb mängija mängijale kahju. Pärast seda, kui esimene mängija lülitit pöörab, arvatakse tehtud kahju maha teise mängija tervisest. Seejärel lülitub see mängija teisele käigule. Nüüd näitab kuvatav number mängija tervist ja toitenupp täitub vasakult paremale. Kui mängija teine on oma käigu teinud, arvatakse kahju maha ja see on taas mängija kord. Seda korratakse seni, kuni üks mängija saavutab 0 tervise. Selle toimimise video on lisatud.

Mängu mängimiseks laadige see põhiplaadile ja vajutage keskmist nuppu. Proovige lülitit pöörata nii palju aktiivseid LED -e kui võimalik ja oodake ning vaadake, kuidas laud need punktid vastase tervisest maha arvab. Seejärel andke see oma sõbrale üle ja

3. samm: Mikroneesia

See mäng on sisuliselt üks suur piiratud olekuga masin, milles toimub mingi keeruline loogika, lähtudes olekust, milles Mikroneesia on.

(Osariigi skeem)

Olek 1: menüü

Esimene olek on menüüekraan, mis on üks lihtsamaid olekuid. See sisaldab seitsme segmendi kuva, millel on sõna “PLAY”, ja nuppu, mis paneb mängu käima. Nupp BTN viib meid järgmisesse olekusse, mis on mängija kord.

Olek 2: mängija esimene kord

Mängija esimese kord aktiveerib signaali, mis paneb seitsme segmendi kuva kuvama mängija teise tervise. Teine signaal lülitub sisse, et aktiveerida teisest meie moodulist imporditud vahetusregister (Pone.vhd). See nihkeregister paneb LED -tuled põlema nagu muudes mängudes suurenev võimsusmõõtur ja seejärel lähtestatakse see 0 -le, kui see saavutab maksimaalse valgusdioodide hulga, mida võiks süüdata. See värskendatakse kella tõusvas servas, mis on saadud saidilt barclock.vhd, mida on muudetud laenatud laborifailist. Mängija esimese riba algas paremalt ja täitus vasakule, sest mängija lüliti on samuti vasakul (intuitiivse kasutuskogemuse jaoks). Kui lüliti on pööratud, liigub olek mängijale ühele mahaarvamisele ja aktiivse LED -i kogus salvestatakse signaali.

Olek 3: mängija üks mahaarvamine

Signaal koos aktiivse LED -i kogusega määrab mahaarvatava tervise. Seda tehakse teise nihkeregistri (deduktor1.vhd) abil, mis LED -ide suurendamise asemel neid vähendab. See väheneb ühe laenatud ja muudetud kella div mooduli tõusvas servas (downcounterclock.vhd). Kui üks LED on välja lülitatud, arvatakse mängija teise tervisest maha üks tervisepunkt. Kui selle protsessi käigus jõuab mängija 2 terviseni 0, peatume ja liigume kohe olekusse „Mäng läbi”. Vastasel juhul, kui LED -vektor jõuab “0000000000000000”, liigume edasi mängija teisele.

Olek 4: teise mängija kord

Mängija teise kord on täpselt nagu mängija esimese kord, välja arvatud selle vahetuste register (Ptwo.bhd) läheb vasakult paremale ja lüliti on laua paremal küljel. Signaal aktiveerub mängija 1 tervise kuvamiseks. Kui lüliti 2 on aktiivne, liigub see teise mängija mahaarvamiskäigule.

5. etapp: mängija teine mahaarvamine

Nagu mängija teise kord, toimib ka mängija mahaarvamine sarnaselt mängija ühe mahaarvamisega. Peamine erinevus seisneb selles, et LED -i väljalülitamist reguleeriv vahetusregister läheb vastupidises suunas, mida on lihtne muuta, kui olete mängija mahaarvamise korralikult töötanud.

6. etapp: mäng läbi Kui mõni mängija jõuab mingil hetkel nullini, lülitub mäng sellesse olekusse. Midagi uhket ei kuvata. Kui vajutate nuppu BTN, taastatakse terviseseisund 99 ja olek läheb tagasi menüüsse, alustades mängu tõhusalt otsast.

Must kast

4. samm: moodulid

Downcounterclock (Bryan Mealy mooduli clk_div.vhd alusel):

See on kell, mis tegeleb deduktsioonide ajastamisega. Konstant nimega max_count on 3 korda rohkem kui barclock max_count konstant. See muudab mahaarvamised 3 korda aeglasemaks kui riba kiirus.

Barclock - (põhineb Bryan Mealy moodulil clk_div.vhd): see kell tegeleb võimsusmõõturite ajastamisega, mida tegime mängule raskuste lisamiseks kiiresti juurde. Seda ajastust saab kohandada oma maitse järgi, suurendades kiirust, muutes konstantse max_count suuremaks või vähendades seda, muutes max_count väiksemaks. Sseg_dec - (Kirjutas Bryan Mealy): see moodul võtab sisendiks 8 -bitise numbri, mille ta dekodeerib, teisendades numbri kümnendkoha ekvivalendiks ja seejärel väljastab seitsme segmendi kuva. Selle faili toimimiseks peate veenduma, et teie piirangud vastavad meie omadele.

Pone: see on nihkeregister, mis nihutab bitte vasakule, lisades ühe kuuma biti, et näha, nagu võimsusmõõtur suureneb. Kui kõik bitid on kuumad, lähtestatakse kõik bitid väärtusele "0" ja tsükkel algab otsast peale.

Ptwo: See on P1 mooduli ümberpööratud versioon.

Deductor1: See on kombinatsioon vahetuste registrist ja lahutajast. Nihkeregister läheb P1 vahetusregistri vastassuunas, näidates mahaarvamist. See lahutab ka mängija 2 tervisest 1 iga tsükli kohta, nii et nende kahe funktsiooni kombinatsiooni korral tundub, et vastase tervis väheneb 1 võrra iga allapoole läinud terviseriba viite kohta.

Deductor2: See on Deductor1 mooduli ümberpööratud versioon.

PlayDecoder (laenatud ja veidi muudetud saidilt ekchen35649 tema 133 juhendatav):

Seda kasutatakse menüü olekus sõna “PLAY” kuvamiseks seitsme segmendi dekoodris.

Mida teha: pildid, video

Soovitan: