2 spēlētāju konkurētspējīga VS laika noteikšanas spēle: 4 soļi
2 spēlētāju konkurētspējīga VS laika noteikšanas spēle: 4 soļi
Anonim
2 spēlētāju konkurētspējīga VS laika noteikšanas spēle
2 spēlētāju konkurētspējīga VS laika noteikšanas spēle

Jums būs nepieciešams:

1. Digilent Basys 3, FPGA padome (vai jebkura cita FPGA,)

2. Salīdzinoši atjaunināta Vivado versija vai kāda cita VHDL vide

3. Dators, kas spēj palaist minēto programmu.

1. darbība: pati spēle

Spēle pati
Spēle pati

Kā MFV mijiedarbojas ar moduļiem.

Kā spēlēt

Lai sāktu, nospiediet vidējo pogu. Tādējādi septiņu segmentu displejā tiks parādīts “99”, kas atspoguļo otrā spēlētāja veselību. Pēc tam gaismas diodes iedegas secīgi no labās uz kreiso pusi. Tas veido barošanas joslu. Kad barošanas josla ir pilna, tā tiek atiestatīta. Pirmā spēlētāja mērķis ir pagriezt slēdzi, kad latiņa ir pēc iespējas augstāka. Jo vairāk iedegas gaismas diodes, jo vairāk spēlētājs nodara zaudējumus otrajam spēlētājam. Kad pirmais spēlētājs pagriež slēdzi, nodarītais kaitējums tiek atskaitīts no otrā spēlētāja veselības. Pēc tam tas pāriet uz otrā spēlētāja kārtu. Tagad parādītais skaitlis atspoguļo spēlētāja veselību, un barošanas josla tiek aizpildīta no kreisās uz labo. Kad otrais spēlētājs izdara gājienu, kaitējums tiek atskaitīts, un tas atkal atgriežas pie pirmā spēlētāja kārtas. Tas tiek atkārtots, līdz viens spēlētājs sasniedz 0 veselības stāvokli. Šīs darbības video ir pievienots.

2. darbība: MFV

MFV
MFV
MFV
MFV
MFV
MFV
MFV
MFV

Šī spēle būtībā ir viena liela ierobežota stāvokļa mašīna, kurā notiek sarežģīta loģika, pamatojoties uz stāvokli, kurā atrodas MFV.

Pirmais stāvoklis ir izvēlnes ekrāns, kas ir viens no vienkāršākajiem stāvokļiem. Tas ietver septiņu segmentu displeju, kurā redzams vārds “PLAY”, un pogu, kas izraisa spēles sākšanu. Poga BTN ved mūs uz nākamo stāvokli, kas ir spēlētāja kārta.

2. stāvoklis: pirmā spēlētāja kārta

Pirmā spēlētāja gājiens aktivizē signālu, kas liek septiņu segmentu displejā parādīt otrā spēlētāja veselību. Ieslēdzas cits signāls, lai aktivizētu maiņu reģistru, kas importēts no cita mūsu izveidotā moduļa (Pone.vhd). Šis maiņu reģistrs liek gaismas diodei iedegties tāpat kā pieaugošs jaudas mērītājs citās spēlēs, un pēc tam tas tiks atiestatīts uz 0, kad tas sasniegs maksimālo gaismas diodes daudzumu, ko varētu iedegt. Tas tiek atjaunināts uz pulksteņa augošās malas, kas iegūta no barclock.vhd, kas ir modificēts no aizgūta laboratorijas faila. Pirmā spēlētāja josla sākās no labās puses un piepildījās pa kreisi, jo spēlētāja slēdzis atrodas arī kreisajā pusē (intuitīvai lietotāja pieredzei). Kad slēdzis ir pagriezts, stāvoklis pāriet uz spēlētāja viena atskaitīšanu, un aktīvo gaismas diožu daudzums tiek saglabāts signālā.

3. stāvoklis: spēlētāja pirmā atskaitīšana Signāls ar aktīvo gaismas diodes daudzumu nosaka atskaitāmās veselības daudzumu. Tas tiek darīts, izveidojot citu maiņu reģistru (dedctor1.vhd), kas nevis palielina gaismas diodes, bet samazina tās. Tas samazinās viena no mūsu aizņemtā un modificētā pulksteņa div moduļa pieaugošajai malai (downcounterclock.vhd). Tiklīdz viena gaismas diode ir izslēgta, viens veselības punkts tiek atņemts no otrā spēlētāja kopējās veselības. Ja šī procesa laikā divi spēlētāji sasniedz 0 veselības stāvokli, mēs apstājamies un nekavējoties pārietam uz stāvokli “Spēle beigusies”. Pretējā gadījumā, kad LED vektors sasniedz “0000000000000000”, mēs pārejam pie otrā spēlētāja kārtas.

4. stāvoklis: otrā spēlētāja kārta Otrā spēlētāja kārta ir tieši tāda pati kā pirmā spēlētāja kārta, izņemot to, ka maiņu reģistrs (Ptwo.bhd) iet no kreisās uz labo pusi, un slēdzis atrodas tāfeles labajā pusē. Tiek aktivizēts signāls, lai tiktu parādīts spēlētāja 1 veselības stāvoklis. Kad 2. slēdzis ir aktīvs, tas pāriet uz otrā spēlētāja atskaitīšanas kārtu.

Piektais posms: otrā spēlētāja atskaitīšana Tāpat kā otrā spēlētāja kārta, otrā spēlētāja atskaitījums darbojas līdzīgi kā spēlētāja pirmā atskaitījums. Galvenā atšķirība ir tā, ka maiņu reģistrs, kas kontrolē gaismas diodes izslēgšanos, iet pretējā virzienā, ko ir viegli mainīt, kad spēlētāja atskaitījums darbojas pareizi.

6. posms: spēle beigusies Ja kādā brīdī kāds no spēlētājiem sasniedz nulles veselības stāvokli, spēle pārslēdzas uz šo stāvokli. Nekas izsmalcināts displejs. Ja tiek nospiests BTN viens, tad stāvoklis tiek atiestatīts uz 99 un stāvoklis atgriežas izvēlnē, efektīvi sākot spēli no jauna.

3. solis: moduļi

Moduļi
Moduļi

Spēles melnās kastes diagramma

Downcounterclock (pamatojoties uz Bryan Mealy moduli clk_div.vhd):

Šis ir pulkstenis, kas apstrādā dedukciju laiku. Konstante ar nosaukumu max_count ir 3 reizes vairāk nekā barclock max_count konstante. Tas padarīs atskaitītājus 3 reizes lēnākus par stieņa ātrumu.

Barclock - (pamatojoties uz Bryan Mealy moduli clk_div.vhd):

Šis pulkstenis apstrādā jaudas mērītāju laiku, ko mēs ātri palielinājām, lai palielinātu spēles grūtības. Šo laiku var pielāgot pēc jūsu vēlmēm, palielinot ātrumu, palielinot konstantu max_count par lielāku skaitli vai samazinot to, padarot max_count par mazāku skaitli. Sseg_dec - (Autors: Bryan Mealy): Šis modulis ievada 8 bitu skaitli kā ievadi, ko tas atšifrē, pārvēršot skaitli par decimālo ekvivalentu, un pēc tam izvada uz septiņu segmentu displeju. Lai šis fails darbotos, jums jāpārliecinās, ka jūsu ierobežojumi atbilst mūsu prasībām.

Pone:

Šis ir nobīdes reģistrs, kas pārnes bitus pa kreisi, pievienojot vienu karstu bitu, lai izskatītos, ka jaudas mērītājs palielinās. Kad visi biti ir karsti, visi biti tiek atiestatīti uz “0” un cikls sākas no jauna.

Ptwo:

Šī ir apgriezta P1 moduļa versija.

Deduktors 1:

Šī ir maiņu reģistra un atņemšanas kombinācija. Maiņu reģistrs iet pretējā virzienā P1 maiņu reģistram, norādot atskaitījumu. Tas arī atņem 1 no 2. spēlētāja veselības stāvokļa katram pulksteņa ciklam, tāpēc, apvienojot šīs divas funkcijas, izskatīsies, ka pretinieka veselība samazinās par 1 par katru veselības joslas rādījumu, kas samazinās.

Deductor2: Šī ir apgriezta Deductor1 moduļa versija.

PlayDecoder (aizgūts un nedaudz mainīts no ekchen35649 viņa 133 pamācības): tas tiek izmantots izvēlnes stāvoklī, lai septiņu segmentu dekodētājā parādītu vārdu “PLAY”.

4. solis: pārbaudiet

Šo spēli sākotnēji iedvesmoja viena no Kirbija minispēlēm. Tā ir vienkārša divu spēlētāju spēle, ko var spēlēt uz Basys 3 dēļa vai jebkuras FPGA.

1. darbība. Nepieciešamie materiāli

Jums būs nepieciešams: Digilent Basys 3, FPGA dēlis (vai jebkura cita) Salīdzinoši atjaunināta Vivado versija vai kāda cita vhdl vide Dators, kas spēj palaist minēto programmu A smadzenes

2. solis: pati spēle

Kā spēlēt

Lai sāktu, nospiediet vidējo pogu. Tādējādi septiņu segmentu displejā tiks parādīts “99”, kas atspoguļo otrā spēlētāja veselību. Pēc tam gaismas diodes iedegas secīgi no labās uz kreiso pusi. Tas veido barošanas joslu. Kad barošanas josla ir pilna, tā tiek atiestatīta. Pirmā spēlētāja mērķis ir pagriezt slēdzi, kad latiņa ir pēc iespējas augstāka. Jo vairāk iedegas gaismas diodes, jo vairāk spēlētājs nodara kaitējumu otrajam spēlētājam. Kad pirmais spēlētājs pagriež slēdzi, nodarītais kaitējums tiek atskaitīts no otrā spēlētāja veselības. Pēc tam tas pāriet uz otrā spēlētāja kārtu. Tagad parādītais skaitlis atspoguļo spēlētāja veselību, un barošanas josla tiek aizpildīta no kreisās uz labo. Kad otrais spēlētājs izdara gājienu, kaitējums tiek atskaitīts, un tas atkal atgriežas pie pirmā spēlētāja kārtas. Tas atkārtojas, līdz viens spēlētājs sasniedz 0 veselības stāvokli. Šīs darbības video ir pievienots.

Lai spēlētu spēli, ielādējiet to uz pamatplates un nospiediet vidējo pogu. Mēģiniet pagriezt slēdzi, kad ir ieslēgts pēc iespējas vairāk gaismas diodes, un pēc tam pagaidiet un vērojiet, kā dēlis atņem šos punktus no pretinieka veselības. Pēc tam nodod to draugam un

3. darbība: MFV

Šī spēle būtībā ir viena liela ierobežota stāvokļa mašīna, kurā notiek sarežģīta loģika, pamatojoties uz stāvokli, kurā atrodas MFV.

(Valsts diagramma)

1. stāvoklis: izvēlne

Pirmais stāvoklis ir izvēlnes ekrāns, kas ir viens no vienkāršākajiem stāvokļiem. Tas ietver septiņu segmentu displeju, kurā redzams vārds “PLAY”, un pogu, kas izraisa spēles sākumu. Poga BTN ved mūs uz nākamo stāvokli, kas ir spēlētāja kārta.

2. stāvoklis: pirmā spēlētāja kārta

Pirmā spēlētāja gājiens aktivizē signālu, kas liek septiņu segmentu displejā parādīt otrā spēlētāja veselību. Ieslēdzas cits signāls, lai aktivizētu maiņu reģistru, kas importēts no cita mūsu izveidotā moduļa (Pone.vhd). Šis maiņu reģistrs liek gaismas diodei iedegties tāpat kā pieaugošs jaudas mērītājs citās spēlēs, un pēc tam tas tiks atiestatīts uz 0, kad tas sasniegs maksimālo gaismas diožu daudzumu, ko varētu iedegt. Tas tiek atjaunināts uz pulksteņa augošās malas, kas iegūta no barclock.vhd, kas ir modificēts no aizgūta laboratorijas faila. Pirmā spēlētāja josla sākās no labās puses un piepildījās pa kreisi, jo spēlētāja slēdzis atrodas arī kreisajā pusē (intuitīvai lietotāja pieredzei). Kad slēdzis ir pagriezts, stāvoklis pāriet uz spēlētāja viena atskaitīšanu, un aktīvo gaismas diožu daudzums tiek saglabāts signālā.

3. stāvoklis: spēlētāja pirmā atskaitīšana

Signāls ar aktīvo gaismas diodes daudzumu nosaka atskaitāmās veselības daudzumu. Tas tiek darīts, izveidojot citu maiņu reģistru (dedctor1.vhd), kas nevis palielina gaismas diodes, bet samazina tās. Tas samazinās viena no mūsu aizņemtā un modificētā pulksteņa div moduļa pieaugošajai malai (downcounterclock.vhd). Tiklīdz viena gaismas diode ir izslēgta, viens veselības punkts tiek atņemts no otrā spēlētāja kopējās veselības. Ja šī procesa laikā divi spēlētāji sasniedz 0 veselības stāvokli, mēs apstājamies un nekavējoties pārietam uz stāvokli “Spēle beigusies”. Pretējā gadījumā, kad LED vektors sasniedz “0000000000000000”, mēs pārejam pie otrā spēlētāja kārtas.

4. stāvoklis: otrā spēlētāja kārta

Otrā spēlētāja gājiens ir tieši tāds pats kā pirmā spēlētāja gājiens, izņemot tā maiņu reģistru (Ptwo.bhd), kas iet no kreisās uz labo pusi, un slēdzis atrodas tāfeles labajā pusē. Tiek aktivizēts signāls, lai tiktu parādīts spēlētāja 1 veselības stāvoklis. Kad 2. slēdzis ir aktīvs, tas pāriet uz otrā spēlētāja atskaitīšanas kārtu.

5. posms: spēlētāja otrā atskaitīšana

Tāpat kā otrā spēlētāja kārta, spēlētājs otrais atskaitījums darbojas līdzīgi spēlētāja pirmā atskaitījumam. Galvenā atšķirība ir tā, ka maiņu reģistrs, kas kontrolē gaismas diodes izslēgšanos, iet pretējā virzienā, un to ir viegli mainīt, kad spēlētāja atskaitījums darbojas pareizi.

6. posms: spēle beigusies Ja kādā brīdī kāds no spēlētājiem sasniedz nulles veselības stāvokli, spēle pārslēdzas uz šo stāvokli. Nekas izsmalcināts displejs. Ja tiek nospiests BTN viens, tad stāvoklis tiek atiestatīts uz 99 un stāvoklis atgriežas izvēlnē, efektīvi sākot spēli no jauna.

Melnā kaste

4. solis: moduļi

Downcounterclock (pamatojoties uz Bryan Mealy moduli clk_div.vhd):

Šis ir pulkstenis, kas apstrādā dedukciju laiku. Konstante ar nosaukumu max_count ir 3 reizes vairāk nekā barclock max_count konstante. Tas padarīs atskaitītājus 3 reizes lēnākus par stieņa ātrumu.

Barclock - (pamatojoties uz Bryan Mealy moduli clk_div.vhd): šis pulkstenis apstrādā jaudas mērītāju laiku, ko mēs ātri palielinājām, lai palielinātu spēles grūtības. Šo laiku var pielāgot pēc jūsu vēlmēm, palielinot ātrumu, palielinot konstantu max_count par lielāku skaitli vai samazinot to, padarot max_count par mazāku skaitli. Sseg_dec - (Autors: Bryan Mealy): Šis modulis ievada 8 bitu skaitli kā ievadi, ko tas atšifrē, pārvēršot skaitli par decimālo ekvivalentu, un pēc tam izvada uz septiņu segmentu displeju. Lai šis fails darbotos, jums jāpārliecinās, ka jūsu ierobežojumi atbilst mūsu prasībām.

Pone: Šis ir nobīdes reģistrs, kas pārnes bitus pa kreisi, pievienojot vienu karstu bitu, lai izskatītos, ka jaudas mērītājs palielinās. Kad visi biti ir karsti, visi biti tiek atiestatīti uz “0” un cikls sākas no jauna.

Ptwo: Šī ir apgriezta P1 moduļa versija.

Deductor1: Šī ir maiņu reģistra un atņemšanas kombinācija. Maiņu reģistrs iet pretējā virzienā P1 maiņu reģistram, norādot atskaitījumu. Tas arī atņem 1 no 2. spēlētāja veselības stāvokļa katram pulksteņa ciklam, tāpēc, apvienojot šīs divas funkcijas, izskatīsies, ka pretinieka veselība samazinās par 1 par katru veselības joslas rādījumu, kas samazinās.

Deductor2: Šī ir apgriezta Deductor1 moduļa versija.

PlayDecoder (aizgūts un nedaudz pārveidots no ekchen35649 viņa 133 pamācības):

Tas tiek izmantots izvēlnes stāvoklī, lai septiņu segmentu dekoderī parādītu vārdu “PLAY”.

Darāmā: attēli, video

Ieteicams: