Sisällysluettelo:

Kahden pelaajan kilpailukykyinen ajoituspeli: 4 vaihetta
Kahden pelaajan kilpailukykyinen ajoituspeli: 4 vaihetta

Video: Kahden pelaajan kilpailukykyinen ajoituspeli: 4 vaihetta

Video: Kahden pelaajan kilpailukykyinen ajoituspeli: 4 vaihetta
Video: 日本小朋友,从小就这样礼貌,竞争力啊 2024, Marraskuu
Anonim
2 pelaajan kilpailukykyinen VS -ajoituspeli
2 pelaajan kilpailukykyinen VS -ajoituspeli

Tarvitset:

1. Digilent Basys 3, FPGA -kortti (tai mikä tahansa muu FPGA,)

2. Suhteellisen ajan tasalla oleva versio Vivadosta tai jostain muusta VHDL -ympäristöstä

3. Tietokone, jolla voidaan suorittaa mainittu ohjelma.

Vaihe 1: Peli itse

Peli itse
Peli itse

Miten Mikronesia on vuorovaikutuksessa moduulien kanssa.

Kuinka pelata

Aloita painamalla keskipainiketta. Tämä aiheuttaa”99”, joka edustaa pelaajan toisen terveyttä, seitsemän segmentin näytössä. Sitten LEDit syttyvät peräkkäin oikealta vasemmalle. Tämä muodostaa tehopalkin. Kun virtapalkki on täynnä, se nollautuu. Pelaajan ensimmäisenä tavoitteena on kääntää kytkintä, kun palkki on mahdollisimman korkealla. Mitä enemmän LED -valoja palaa, sitä enemmän pelaaja vahingoittaa kahta pelaajaa. Kun pelaaja yksi kääntää kytkintä, jaettu vahinko vähennetään pelaajan toisen terveydestä. Sitten se siirtyy pelaajan toisen vuorolle. Nyt näytetty numero edustaa pelaajan terveyttä, ja virtapalkki täyttyy vasemmalta oikealle. Kun pelaaja kaksi tekee siirtonsa, vahinko vähennetään ja palataan pelaajan vuorolle. Tämä toistuu, kunnes yksi pelaaja saavuttaa 0 terveyden. Video toiminnasta on liitteenä.

Vaihe 2: FSM

FSM
FSM
FSM
FSM
FSM
FSM
FSM
FSM

Tämä peli on pohjimmiltaan yksi suuri äärellinen tilakone, jossa tapahtuu monimutkaista logiikkaa sen tilan perusteella, jossa Mikronesia on.

Tila 1: Valikko Ensimmäinen tila on valikkoruutu, joka on yksi yksinkertaisimmista tiloista. Se sisältää seitsemän segmentin näytön, jossa näkyy sana "PLAY", ja painikkeen, joka saa pelin käynnistymään. Painike, BTN, johtaa meidät seuraavaan tilaan, joka on pelaajan vuoro.

Tila 2: Pelaajan ensimmäisen vuoro

Pelaajan ensimmäisen vuoro aktivoi signaalin, joka saa seitsemän segmentin näytön näyttämään pelaajan toisen terveyden. Toinen signaali käynnistyy aktivoidaksesi toisesta luomastamme moduulista (Pone.vhd) tuodun siirtorekisterin. Tämä siirtorekisteri saa LED -valot syttymään kuten kasvava tehomittari muissa peleissä, ja se nollautuu sitten 0: een, kun se saavuttaa suurimman mahdollisen syttyvien LED -valojen määrän. Se päivittyy kellon nousevalle reunalle, joka on saatu osoitteesta barclock.vhd, joka on muokattu lainatusta laboratoriotiedostosta. Pelaajamme palkki alkoi oikealta ja täyttyi vasemmalle, koska pelaajan kytkin on myös vasemmalla (intuitiivisen käyttökokemuksen vuoksi). Kun kytkin on käännetty, tila siirtyy pelaajan yhden vähennyksen kohdalle ja aktiivisten merkkivalojen määrä tallennetaan signaaliin.

Tila 3: Pelaajan yhden vähennys Signaali, jossa on aktiivinen LED -määrä, määrää vähennettävän terveyden määrän. Tämä tehdään tekemällä toinen siirtorekisteri (dedctor1.vhd), joka pikemminkin kuin lisää LED -valoja, pienentää niitä. Tämä pienenee yhden lainaamamme ja muokkaamamme kellon div -moduulin nousevalla reunalla (downcounterclock.vhd). Heti kun yksi LED sammuu, yksi terveyspiste vähennetään pelaajan toisen kokonaisterveydestä. Jos tämän prosessin aikana pelaaja kaksi saavuttaa 0 terveyden, pysähdymme ja siirrymme välittömästi "Game over" -tilaan. Muuten, kun LED -vektori saavuttaa arvon "0000000000000000", siirrymme pelaajan toisen vuorolle.

Tila 4: Pelaajan toisen vuoro Pelaajan toisen vuoro on täsmälleen kuin pelaajan ensimmäisen vuoro, paitsi että sen vuororekisteri (Ptwo.bhd) kulkee vasemmalta oikealle ja kytkin on laudan oikealla puolella. Signaali aktivoituu, jotta pelaaja 1: n terveysnäyttö tulee näkyviin. Kun kytkin 2 on aktiivinen, tämä siirtyy pelaajan toisen vähennyskierrokseen.

Vaihe 5: Pelaaja Kaksi Vähennys Aivan kuten Pelaajan toisen vuoro, Pelaaja Kaksi Vähennys toimii Paljon Pelaajan Vähennyksen tavoin. Suurin ero on se, että LED -valon sammumista ohjaava siirtorekisteri menee vastakkaiseen suuntaan, mikä on helppo muokata, kun pelaajan vähennys toimii oikein.

Vaihe 6: Peli päättynyt Jos jossakin vaiheessa jommankumman pelaajan terveys on nolla, peli siirtyy tähän tilaan. Ei mitään hienoja näyttöjä. Jos BTN -näppäintä painetaan, kunto palautetaan 99: ksi ja tila palaa valikkoon ja aloittaa pelin tehokkaasti alusta.

Vaihe 3: Moduulit

Moduulit
Moduulit

Black Box -kaavio pelille

Downcounterclock (perustuu Bryan Mealyn clk_div.vhd -moduuliin):

Tämä on kello, joka hoitaa vähennysten ajoituksen. Vakio nimeltä max_count on 3x enemmän kuin barclockin max_count -vakio. Tämä tekee vähennykset 3 kertaa hitaammaksi kuin tangon nopeus.

Barclock - (perustuu Bryan Mealyn clk_div.vhd -moduuliin):

Tämä kello käsittelee tehomittarien ajoitusta, jota lisäsimme nopeasti vaikeuttaaksemme peliä. Tätä ajoitusta voidaan säätää mieleiseksesi lisäämällä nopeutta lisäämällä vakio max_count suuremmaksi tai pienentämällä sitä pienentämällä max_count. Sseg_dec - (Kirjoittanut Bryan Mealy): Tämä moduuli ottaa syötteeksi 8 -bittisen numeron, jonka se dekoodaa, muuntaa numeron desimaalilukuksi ja tulostaa sitten seitsemän segmentin näyttöön. Jotta tämä tiedosto toimisi, sinun on varmistettava, että rajoituksesi vastaavat meidän.

Pone:

Tämä on siirtorekisteri, joka siirtää bittejä vasemmalle lisäämällä yhden kuuman bitin, jotta se näyttää tehomittarin kasvavan. Kun kaikki bitit ovat kuumia, kaikki bitit palautuvat arvoon "0" ja sykli alkaa alusta.

Ptwo:

Tämä on käännetty versio P1 -moduulista.

Vähennys1:

Tämä on yhdistelmä vuororekisteristä ja vähennyslaskimesta. Vuororekisteri menee päinvastaiseen suuntaan kuin P1: n siirtorekisteri, mikä osoittaa vähennyksen. Tämä vähentää myös yhden pelaajan 2 terveydestä jokaista kellojaksoa kohden, joten näiden kahden toiminnon yhdistelmällä näyttää siltä, että vastustajan terveys heikkenee yhdellä jokaisella terveyspylvään ledillä.

Vähennys2: Tämä on käännetty versio Deductor1 -moduulista.

PlayDecoder (lainattu ja muutettu hitaasti ekchen35649: stä hänen 133 ohjeesta): Tätä käytetään valikkotilassa näyttämään sana “PLAY” seitsemän segmentin dekooderissa.

Vaihe 4: Testaa

Tämä peli on alun perin innoittanut yksi Kirbyn minipeleistä. Se on yksinkertainen kahden pelaajan peli, jota voidaan pelata Basys 3 Boardilla tai millä tahansa FPGA: lla.

Vaihe 1: Tarvittavat materiaalit

Tarvitset: Digilent Basys 3: n, FPGA -kortin (tai minkä tahansa muun) Suhteellisen ajan tasalla olevan version Vivadosta tai jonkin muun vhdl -ympäristön Tietokone, joka voi käyttää mainittua ohjelmaa Aivot

Vaihe 2: Peli itse

Kuinka pelata

Aloita painamalla keskipainiketta. Tämä aiheuttaa”99”, joka edustaa pelaajan toisen terveyttä, seitsemän segmentin näytössä. Sitten LEDit syttyvät peräkkäin oikealta vasemmalle. Tämä muodostaa tehopalkin. Kun virtapalkki on täynnä, se nollautuu. Pelaajan tavoitteena on kääntää kytkintä, kun palkki on mahdollisimman korkealla. Mitä enemmän LED -valoja palaa, sitä enemmän pelaaja vahingoittaa kahta pelaajaa. Kun pelaaja yksi kääntää kytkintä, jaettu vahinko vähennetään pelaajan toisen terveydestä. Sitten se siirtyy pelaajan toisen vuorolle. Nyt näytetty numero edustaa pelaajan terveyttä, ja virtapalkki täyttyy vasemmalta oikealle. Kun pelaaja kaksi tekee siirtonsa, vahinko vähennetään ja palataan pelaajan vuorolle. Tämä toistuu, kunnes yksi pelaaja saavuttaa 0 terveyden. Video toiminnasta on liitteenä.

Voit pelata peliä lataamalla sen peruspöydälle ja painamalla keskipainiketta. Yritä kääntää kytkin niin monta LEDiä aktiivisena kuin mahdollista ja odota sitten, kun lauta vähentää nämä pisteet vastustajasi terveydestä. Siirrä se sitten ystävällesi ja

Vaihe 3: FSM

Tämä peli on pohjimmiltaan yksi iso äärellinen tilakone, jossa tapahtuu monimutkaista logiikkaa sen tilan perusteella, jossa Mikronesia on.

(Valtion kaavio)

Tila 1: Valikko

Ensimmäinen tila on valikkoruutu, joka on yksi yksinkertaisimmista tiloista. Se sisältää seitsemän segmentin näytön, jossa näkyy sana "PLAY", ja painikkeen, joka saa pelin käynnistymään. Painike, BTN, johtaa meidät seuraavaan tilaan, joka on pelaajan vuoro.

Tila 2: Pelaajan yksi vuoro

Pelaajan ensimmäisen vuoro aktivoi signaalin, joka saa seitsemän segmentin näytön näyttämään pelaajan toisen terveyden. Toinen signaali käynnistyy aktivoidaksesi toisesta luomastamme moduulista (Pone.vhd) tuodun siirtorekisterin. Tämä siirtorekisteri saa LED -valot syttymään kuten kasvava tehomittari muissa peleissä, ja se nollautuu sitten 0: een, kun se saavuttaa suurimman mahdollisen syttyvien LED -valojen määrän. Se päivittyy kellon nousevalle reunalle, joka on saatu osoitteesta barclock.vhd, joka on muokattu lainatusta laboratoriotiedostosta. Pelaajamme palkki alkoi oikealta ja täytettiin vasemmalle, koska pelaajan kytkin on myös vasemmalla (intuitiivisen käyttökokemuksen vuoksi). Kun kytkin on käännetty, tila siirtyy pelaajan yhden vähennyksen kohdalle ja aktiivisten merkkivalojen määrä tallennetaan signaaliin.

Tila 3: Pelaaja yhden vähennys

Signaali, jossa on aktiivinen LED -määrä, määrää vähennettävän terveyden määrän. Tämä tehdään tekemällä toinen siirtorekisteri (dedctor1.vhd), joka pikemminkin kuin lisää LED -valoja, pienentää niitä. Tämä pienenee yhden lainaamamme ja muokkaamamme kellon div -moduulin nousevalla reunalla (downcounterclock.vhd). Heti kun yksi LED sammuu, yksi terveyspiste vähennetään pelaajan toisen kokonaisterveydestä. Jos tämän prosessin aikana pelaaja kaksi saavuttaa 0 terveyden, pysähdymme ja siirrymme heti "Game over" -tilaan. Muuten, kun LED -vektori saavuttaa arvon "0000000000000000", siirrymme pelaajan toisen vuorolle.

Tila 4: Pelaajan toisen vuoro

Pelaajan toisen vuoro on täsmälleen sama kuin pelaajan ensimmäisen vuoro, paitsi että sen vuororekisteri (Ptwo.bhd) kulkee vasemmalta oikealle ja kytkin on laudan oikealla puolella. Signaali aktivoituu, jotta pelaaja 1: n terveysnäyttö tulee näkyviin. Kun kytkin 2 on aktiivinen, tämä siirtyy pelaajan toisen vähennyskierrokseen.

Vaihe 5: Pelaajan kaksi vähennys

Aivan kuten pelaajan toisen vuoro, pelaajan kahden vähennys toimii paljon kuin pelaajan yhden vähennys. Suurin ero on se, että LED -valon sammumista ohjaava siirtorekisteri menee vastakkaiseen suuntaan, mikä on helppo muokata, kun pelaajan vähennys toimii oikein.

Vaihe 6: Peli päättynyt Jos jossakin vaiheessa jommankumman pelaajan terveys on nolla, peli siirtyy tähän tilaan. Ei mitään hienoja näyttöjä. Jos BTN -näppäintä painetaan, kunto palautetaan 99: ksi ja tila palaa valikkoon ja aloittaa pelin tehokkaasti alusta.

Musta laatikko

Vaihe 4: Moduulit

Downcounterclock (perustuu Bryan Mealyn clk_div.vhd -moduuliin):

Tämä on kello, joka hoitaa vähennysten ajoituksen. Vakio nimeltä max_count on 3x enemmän kuin barclockin max_count -vakio. Tämä tekee vähennykset 3 kertaa hitaammaksi kuin tangon nopeus.

Barclock - (perustuu Bryan Mealyn clk_div.vhd -moduuliin): Tämä kello käsittelee tehomittarien ajoitusta, jota lisäsimme nopeasti vaikeuttaaksemme peliä. Tätä ajoitusta voidaan säätää mieleiseksesi lisäämällä nopeutta lisäämällä vakio max_count suuremmaksi tai pienentämällä sitä pienentämällä max_count. Sseg_dec - (Kirjoittanut Bryan Mealy): Tämä moduuli ottaa syötteeksi 8 -bittisen numeron, jonka se purkaa, muuntaa numeron desimaalilukuksi ja tulostaa sitten seitsemän segmentin näyttöön. Jotta tämä tiedosto toimisi, sinun on varmistettava, että rajoituksesi vastaavat meidän.

Pone: Tämä on siirtorekisteri, joka siirtää bittejä vasemmalle ja lisää yhden kuuman bitin, jotta se näyttää tehomittarin kasvavan. Kun kaikki bitit ovat kuumia, kaikki bitit palautuvat arvoon "0" ja sykli alkaa alusta.

Ptwo: Tämä on käännetty versio P1 -moduulista.

Vähennys1: Tämä on yhdistelmä vuororekisteristä ja vähennyslaskimesta. Vuororekisteri menee päinvastaiseen suuntaan kuin P1: n siirtorekisteri, mikä osoittaa vähennyksen. Tämä vähentää myös 1 pelaajan 2 terveydestä jokaista kellojaksoa kohden, joten näiden kahden toiminnon yhdistelmällä näyttää siltä, että vastustajan terveys heikkenee yhdellä jokaisella terveyspalkin ledillä.

Vähennys2: Tämä on käännetty versio Deductor1 -moduulista.

PlayDecoder (lainattu ja hieman muokattu ekchen35649 hänen 133 ohjeesta):

Tätä käytetään valikkotilassa näyttämään sana “PLAY” seitsemän segmentin dekooderissa.

To do: kuvat, video

Suositeltava: