Turinys:

2 žaidėjų konkurencingas laiko žaidimas: 4 žingsniai
2 žaidėjų konkurencingas laiko žaidimas: 4 žingsniai

Video: 2 žaidėjų konkurencingas laiko žaidimas: 4 žingsniai

Video: 2 žaidėjų konkurencingas laiko žaidimas: 4 žingsniai
Video: КАК НАСТРОИТЬ L4D2 2024, Lapkritis
Anonim
Dviejų žaidėjų konkurencingas laiko žaidimas
Dviejų žaidėjų konkurencingas laiko žaidimas

Jums reikės:

1. „Digilent Basys 3“, FPGA plokštė (arba bet kuri kita FPGA)

2. Palyginti naujausia „Vivado“ar kitos VHDL aplinkos versija

3. Kompiuteris, galintis paleisti minėtą programą.

1 žingsnis: pats žaidimas

Pats žaidimas
Pats žaidimas

Kaip MFV sąveikauja su moduliais.

Kaip žaisti

Norėdami pradėti, paspauskite vidurinį mygtuką. Dėl to septynių segmentų ekrane bus rodomas „99“, reiškiantis antrojo žaidėjo sveikatą. Tada šviesos diodai užsidegs iš eilės iš dešinės į kairę. Tai sudaro maitinimo juostą. Kai maitinimo juosta pilna, ji atsistato. Pirmojo žaidėjo tikslas yra pasukti jungiklį, kai juosta yra kuo aukščiau. Kuo daugiau šviesos diodų užsidega, tuo daugiau žalos vienas žaidėjas daro antram žaidėjui. Pirmam žaidėjui pasukus jungiklį, padaryta žala atimama iš antrojo žaidėjo sveikatos. Tada jis persijungia į antrojo žaidėjo eilę. Dabar rodomas skaičius rodo žaidėjo sveikatą, o maitinimo juosta užpildoma iš kairės į dešinę. Kai antrasis žaidėjas daro ėjimą, žala atimama ir vėl sugrįžta į žaidėjo eilę. Tai kartojama tol, kol vienas žaidėjas pasiekia 0 sveikatos. Šio darbo vaizdo įrašas pridedamas.

2 žingsnis: FSM

MFV
MFV
MFV
MFV
MFV
MFV
MFV
MFV

Šis žaidimas iš esmės yra viena didelė baigtinės būsenos mašina, kuriai būdinga sudėtinga logika, pagrįsta būsena, kurioje yra MFV.

1 būsena: meniu Pirmoji būsena yra meniu ekranas, kuris yra viena iš paprastesnių būsenų. Jį sudaro septynių segmentų ekranas, kuriame rodomas žodis „PLAY“, ir mygtukas, dėl kurio prasideda žaidimas. Mygtukas BTN veda mus į kitą būseną, kuri yra žaidėjo eilė.

2 būsena: pirmojo žaidėjo eilė

Pirmojo žaidėjo ėjimas suaktyvina signalą, dėl kurio septynių segmentų ekrane rodoma antrojo žaidėjo sveikata. Įjungiamas kitas signalas, kad būtų suaktyvintas pamainų registras, importuotas iš kito mūsų sukurto modulio (Pone.vhd). Šis poslinkių registras priverčia šviesos diodus užsidegti taip, kaip padidėtų galios matuoklis kituose žaidimuose, o tada, kai pasiekia maksimalų šviesos diodų kiekį, kuris gali užsidegti, jis atstatomas į 0. Jis atnaujinamas kylančiame laikrodžio krašte, gautame iš barclock.vhd, kuris yra modifikuotas iš pasiskolintos laboratorijos bylos. Turėjome vieno žaidėjo juostą pradėti nuo dešinės ir užpildyti iki kairės, nes žaidėjo jungiklis taip pat yra kairėje (intuityviam naudotojo patyrimui). Pasukus jungiklį, būsena pereina prie vieno žaidėjo atskaitymo, o aktyvių šviesos diodų kiekis išsaugomas signale.

3 būsena: pirmojo žaidėjo atskaitymas Signalas, kuriame yra aktyvus šviesos diodų kiekis, lemia išskaičiuojamos sveikatos kiekį. Tai daroma turint kitą pamainų registrą (deduktorius1.vhd), kuris, o ne didina šviesos diodus, juos mažina. Tai sumažina vieno iš mūsų pasiskolintų ir modifikuotų laikrodžio modulių kylančio krašto (downcounterclock.vhd). Išjungus vieną šviesos diodą, vienas sveikatos taškas atimamas iš visos žaidėjo sveikatos. Jei šio proceso metu du žaidėjai pasiekia 0 sveikatos būklę, mes sustojame ir nedelsdami pereiname į būseną „Žaidimas baigtas“. Priešingu atveju, kai LED vektorius pasieks „0000000000000000“, pereisime prie antrojo žaidėjo eilės.

4 būsena: Antrojo žaidėjo eilė Antrojo žaidėjo eilė yra lygiai tokia pati kaip pirmojo žaidėjo eilė, išskyrus tai, kad jo pamainų registras (Ptwo.bhd) eina iš kairės į dešinę, o jungiklis yra dešinėje lentos pusėje. Įsijungia signalas, kad būtų rodomas 1 žaidėjo sveikatos rodiklis. Kai 2 jungiklis yra aktyvus, pereinama prie antrojo žaidėjo atskaitymo.

5 etapas: antro žaidėjo atskaitymas Kaip ir antrojo žaidėjo eilė, taip ir antrojo žaidėjo atskaitymas veikia panašiai kaip žaidėjo vieno atskaitymas. Pagrindinis skirtumas yra tas, kad poslinkių registras, valdantis šviesos diodų išjungimą, eina priešinga kryptimi, o tai lengva pakeisti, kai tik žaidėjo atskaitymas veikia tinkamai.

6 etapas: žaidimas baigtas Jei bet kuriuo metu bet kuris žaidėjas pasiekia nulį sveikatos, žaidimas persijungia į šią būseną. Nieko įmantraus nerodo. Jei paspaudžiamas vienas BTN, sveikata atkuriama į 99 ir būsena grįžta į meniu, efektyviai pradedant žaidimą.

3 žingsnis: moduliai

Moduliai
Moduliai

Žaidimo juodosios dėžės schema

„Downcounterclock“(remiantis Bryan Mealy „clk_div.vhd“moduliu):

Tai laikrodis, valdantis dedukcijų laiką. Konstanta, pavadinta max_count, yra 3 kartus didesnė nei barclock max_count konstanta. Taip dedekliai bus 3 kartus lėtesni už juostos greitį.

„Barclock“- (remiantis Bryan Mealy „clk_div.vhd“moduliu):

Šis laikrodis tvarko galios matuoklių laiką, kurį greitai padidinome, kad padidintume žaidimo sunkumus. Šį laiką galima koreguoti pagal jūsų pageidavimus, padidinant greitį, padidinant pastovią maks. Sseg_dec - (Parašė Bryan Mealy): Šis modulis ima 8 bitų skaičių kaip įvestį, kurį dekoduoja, konvertuodamas skaičių į dešimtainį atitikmenį, o tada išvedamas į septynių segmentų ekraną. Kad šis failas veiktų, turite įsitikinti, kad jūsų apribojimai atitinka mūsų.

Pone:

Tai poslinkių registras, perkeliantis bitus į kairę, pridedant vieną karštą bitą, kad atrodytų, kad galios matuoklis didėja. Kai visi bitai yra karšti, visi bitai atstatomi į „0“ir ciklas prasideda iš naujo.

Ptwo:

Tai yra apversta P1 modulio versija.

Deduktorius 1:

Tai yra poslinkio registro ir atimties derinys. Pamainų registras eina priešinga P1 pamainų registro kryptimi, nurodydamas atskaitymą. Tai taip pat atima 1 iš 2 žaidėjo sveikatos kiekvienam laikrodžio ciklui, taigi, derinant šias dvi funkcijas, atrodys, kad priešininko sveikata sumažėja 1 kiekvienam sveikatos juostos rodikliui, kuris mažėja.

„Deductor2“: tai apversta „Deductor1“modulio versija.

„PlayDecoder“(pasiskolintas ir šiek tiek pakeistas iš „ekchen35649“, jo 133 nurodomas): tai naudojama meniu būsenoje, kad septynių segmentų dekoderyje būtų rodomas žodis „PLAY“.

4 žingsnis: išbandykite

Šį žaidimą iš pradžių įkvėpė viena iš mini žaidimų iš Kirbio. Tai paprastas dviejų žaidėjų žaidimas, kurį galima žaisti ant „Basys 3“lentos arba bet kurios FPGA.

1 žingsnis: reikalingos medžiagos

Jums reikės: „Digilent Basys 3“, FPGA plokštės (ar bet kurios kitos) Santykinai naujausios „Vivado“versijos arba kitos vhdl aplinkos Kompiuteris, galintis paleisti minėtą programą

2 žingsnis: pats žaidimas

Kaip žaisti

Norėdami pradėti, paspauskite vidurinį mygtuką. Dėl to septynių segmentų ekrane bus rodomas „99“, reiškiantis antrojo žaidėjo sveikatą. Tada šviesos diodai užsidegs iš eilės iš dešinės į kairę. Tai sudaro maitinimo juostą. Kai maitinimo juosta pilna, ji atsistato. Pirmojo žaidėjo tikslas yra pasukti jungiklį, kai juosta yra kuo aukščiau. Kuo daugiau šviesos diodų užsidega, tuo daugiau žalos vienas žaidėjas daro antram žaidėjui. Pirmam žaidėjui pasukus jungiklį, padaryta žala atimama iš antrojo žaidėjo sveikatos. Tada jis persijungia į antrojo žaidėjo eilę. Dabar rodomas skaičius rodo žaidėjo sveikatą, o maitinimo juosta užpildoma iš kairės į dešinę. Kai antrasis žaidėjas daro ėjimą, žala atimama ir vėl sugrįžta į žaidėjo eilę. Tai kartojama tol, kol vienas žaidėjas pasiekia 0 sveikatos. Šio darbo vaizdo įrašas pridedamas.

Norėdami žaisti žaidimą, įdėkite jį į pagrindinę plokštę ir paspauskite vidurinį mygtuką. Pabandykite apversti jungiklį, kai įjungta kuo daugiau šviesos diodų, tada palaukite ir stebėkite, kaip lenta atima tuos taškus iš jūsų priešininko sveikatos. Tada perduokite jį savo draugui ir

3 žingsnis: FMV

Šis žaidimas iš esmės yra viena didelė baigtinės būsenos mašina, kuriai būdinga sudėtinga logika, pagrįsta būsena, kurioje yra MFV.

(Valstybinė diagrama)

1 būsena: meniu

Pirmoji būsena yra meniu ekranas, kuris yra viena iš paprastesnių būsenų. Jį sudaro septynių segmentų ekranas, kuriame rodomas žodis „PLAY“, ir mygtukas, dėl kurio prasideda žaidimas. Mygtukas BTN veda mus į kitą būseną, kuri yra žaidėjo eilė.

2 būsena: pirmojo žaidėjo eilė

Pirmojo žaidėjo ėjimas suaktyvina signalą, dėl kurio septynių segmentų ekrane rodoma antrojo žaidėjo sveikata. Įjungiamas kitas signalas, kad būtų suaktyvintas pamainų registras, importuotas iš kito mūsų sukurto modulio (Pone.vhd). Šis poslinkių registras priverčia šviesos diodus užsidegti taip, kaip padidėtų galios matuoklis kituose žaidimuose, ir tada jis vėl nustatomas į 0, kai pasiekia maksimalų šviesos diodų kiekį, kurį galima užsidegti. Jis atnaujinamas kylančiame laikrodžio krašte, gautame iš barclock.vhd, kuris yra modifikuotas iš pasiskolintos laboratorijos bylos. Turėjome vieno žaidėjo juostą pradėti nuo dešinės ir užpildyti iki kairės, nes žaidėjo jungiklis taip pat yra kairėje (intuityviai vartotojo patirčiai). Pasukus jungiklį, būsena pereina prie vieno žaidėjo atskaitymo, o aktyvių šviesos diodų kiekis išsaugomas signale.

3 būsena: pirmojo žaidėjo atskaitymas

Signalas su aktyvuotu šviesos diodų kiekiu lemia sveikatos būklę, kuri bus išskaičiuota. Tai daroma turint kitą pamainų registrą (deduktorius1.vhd), kuris, o ne didina šviesos diodus, juos mažina. Tai sumažina vieno iš mūsų pasiskolintų ir modifikuotų laikrodžio modulių kylančio krašto (downcounterclock.vhd). Išjungus vieną šviesos diodą, vienas sveikatos taškas atimamas iš visos žaidėjo sveikatos. Jei šio proceso metu du žaidėjai pasiekia 0 sveikatos būklę, mes sustojame ir nedelsdami pereiname į būseną „Žaidimas baigtas“. Priešingu atveju, kai LED vektorius pasieks „0000000000000000“, pereisime prie antrojo žaidėjo eilės.

4 būsena: antrojo žaidėjo eilė

Antrojo žaidėjo eilė yra lygiai tokia pati kaip pirmojo žaidėjo eilė, išskyrus tai, kad jo pamainų registras (Ptwo.bhd) eina iš kairės į dešinę, o jungiklis yra dešinėje lentos pusėje. Įsijungia signalas, kad būtų rodomas 1 žaidėjo sveikatos rodiklis. Kai 2 jungiklis yra aktyvus, pereinama prie antrojo žaidėjo atskaitymo.

5 etapas: žaidėjo du atskaitymai

Kaip ir antrojo žaidėjo eilė, du žaidėjo atskaitymai veikia panašiai kaip žaidėjo vieno atskaitymas. Pagrindinis skirtumas yra tas, kad poslinkių registras, valdantis šviesos diodų išjungimą, eina priešinga kryptimi, o tai lengva pakeisti, kai tik žaidėjo atskaitymas veikia tinkamai.

6 etapas: žaidimas baigtas Jei bet kuriuo metu bet kuris žaidėjas pasiekia nulį sveikatos, žaidimas persijungia į šią būseną. Nieko įmantraus nerodo. Jei paspaudžiamas BTN vienas, tada būsena atkuriama į 99 ir būsena grįžta į meniu, efektyviai pradedant žaidimą iš naujo.

Juoda dėžė

4 žingsnis: moduliai

„Downcounterclock“(remiantis Bryan Mealy „clk_div.vhd“moduliu):

Tai laikrodis, valdantis dedukcijų laiką. Konstanta, pavadinta max_count, yra 3 kartus didesnė nei barclock max_count konstanta. Taip dedekliai bus 3 kartus lėtesni už juostos greitį.

„Barclock“- (remiantis Bryan Mealy „clk_div.vhd“moduliu): šis laikrodis tvarko galios matuoklių laiką, kurį greitai padidinome, kad padidintume žaidimo sunkumus. Šį laiką galima pakoreguoti pagal jūsų pageidavimus, padidinant greitį, padidinant pastovią max_count skaičių arba sumažinant jį, sumažinant max_count skaičių. Sseg_dec - (Parašė Bryan Mealy): Šis modulis ima 8 bitų skaičių kaip įvestį, kurį dekoduoja, konvertuodamas skaičių į dešimtainį atitikmenį, o tada išvedamas į septynių segmentų ekraną. Kad šis failas veiktų, turite įsitikinti, kad jūsų apribojimai atitinka mūsų.

Pone: Tai poslinkių registras, perkeliantis bitus į kairę, pridedant vieną karštą bitą, kad atrodytų, kad galios matuoklis didėja. Kai visi bitai yra karšti, visi bitai atstatomi į „0“ir ciklas prasideda iš naujo.

Ptwo: Tai apversta P1 modulio versija.

Deductor1: Tai yra poslinkio registro ir atimties derinys. Pamainų registras eina priešinga P1 pamainų registro kryptimi, nurodydamas atskaitymą. Tai taip pat atima 1 iš 2 žaidėjo sveikatos kiekvienam laikrodžio ciklui, taigi, derinant šias dvi funkcijas, atrodys, kad priešininko sveikata sumažėja 1 kiekvienam sveikatos juostos rodikliui, kuris mažėja.

„Deductor2“: tai apversta „Deductor1“modulio versija.

„PlayDecoder“(pasiskolinta ir šiek tiek pakeista iš „ekchen35649“, jo 133 nurodomas):

Tai naudojama meniu būsenoje, kad septynių segmentų dekoderyje būtų rodomas žodis „PLAY“.

Ką daryti: nuotraukos, vaizdo įrašai

Rekomenduojamas: