Turinys:
Video: 2 žaidėjų konkurencingas laiko žaidimas: 4 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
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
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
Š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
Ž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:
„Tap Tap Rainbow“- dviejų žaidėjų greito reagavimo žaidimas: 4 žingsniai (su paveikslėliais)
„Tap Tap Rainbow“- dviejų žaidėjų greito reagavimo žaidimas: Prieš 2 savaites mano dukrai kilo geniali idėja sukurti greitą reakcijos žaidimą su vaivorykštės spalvomis (ji yra vaivorykštės ekspertė: D). Man akimirksniu patiko ši idėja ir mes pradėjome galvoti, kaip galėtume tai paversti tikru žaidimu. Idėja buvo. Jūs turite vaivorykštę
Simono žaidimas - įdomus žaidimas!: 5 žingsniai
Simono žaidimas - įdomus žaidimas!: Nuoroda: čia Laikas mums treniruoti smegenis, ar ne? Be tų nuobodžių ir beprasmių žaidimų, yra žaidimas „Simono žaidimas“
„Aruduino“LED žaidimas Greitas dviejų žaidėjų paspaudimas: 8 žingsniai
„Aruduino LED“žaidimas Spustelėjus dviejų žaidėjų žaidimą: šį projektą įkvėpė @HassonAlkeim. Jei norite giliai pažvelgti, čia yra nuoroda, kurią galite patikrinti https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Šis žaidimas yra patobulinta „Alkeim's“versija. Tai yra
„Unity“kelių žaidėjų 3D hologramos žaidimas ir „Hologram“projektorius asmeniniam kompiuteriui: 16 žingsnių (su nuotraukomis)
„Unity“kelių žaidėjų 3D hologramų žaidimas ir „Hologram“projektorius asmeniniam kompiuteriui: įkvėptas „Holus“, man patinka labai pigiai sukurti holografinį ekraną. Bet kai bandau rasti žaidimų, internete nieko neradau. Taigi planuoju sukurti savo žaidimą „Unity“. Tai pirmas mano žaidimas vienybėje. Prieš tai sukūriau kai kuriuos „Flash“žaidimus, bet
„Fischertechnik“LED reakcijos laiko žaidimas: 7 žingsniai
„Fischertechnik LED“reakcijos laiko žaidimas: Kaip sukurti „fischertechnik LED“REAKCIJOS LAIKO ŽAIDIMĄ Žaidžiu su įvairiais švietėjiškais manipuliavimo įrankiais. (Apsilankykite www.weirdrichard.com). Lengvai kuriama programa yra LED REAKCIJOS LAIKO ŽAIDIMAS. Robotinis valdiklis (šiuo atveju