Sisällysluettelo:
- Vaihe 1: Yleiskatsaus
- Vaihe 2: Materiaalit
- Vaihe 3: Pelin tekeminen
- Vaihe 4: Tulevat muutokset
- Vaihe 5: Johtopäätös
Video: Miinanraivaaja: 5 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
CPE 133: n lopullista projektiamme varten Chase ja minä päätimme luoda "Minesweeper" -pelin, jossa hyödynnettiin Basys-3-levyn painikkeita ja kytkimiä sekä VHDL-koodia. Parempi nimi pelille voisi hyvinkin olla”venäläinen ruletti”, mutta halusimme käyttää perheystävällisempää nimeä. Peli sisältää sen, että käyttäjä painaa Basys -levyn keskipainiketta ja määrittää satunnaisesti yhden 16: sta kytkimestä "aktiiviseksi" pommin kanssa. Kaksi pelaajaa kääntää vuorotellen kytkimiä yksi kerrallaan, kunnes yksi pelaajista kääntää kytkimen "pommilla". Kun näin tapahtuu, seitsemän segmentin näyttö varoittaa pelaajia siitä, että pelaaja on juuri hävinnyt pelin.
Vaihe 1: Yleiskatsaus
Projektissa hyödynnettiin monia VHDL -moduuleja, joita olemme käyttäneet tämän vuosineljänneksen aikana. Neljän bitin laskuria käytettiin yhdessä kellon reunan kanssa simuloidakseen satunnaista neljän bitin numeroa yhden kytkimen aktivoimiseksi. Tilakaaviota käytettiin myös eri sanojen lähettämiseen seitsemän segmentin näyttöön aina PLAY -tilasta, kun pelaajat ovat kesken pelinsä, LOSE -tilaan, kun joku pelaajista on kääntänyt aktiivisen kytkimen.
Vaihe 2: Materiaalit
- Basile3 Development Board, Digilent, Inc.
- Vivado Design Suite BC_DEC.vhd (Tämä tiedosto toimitettiin meille Polylearnissa ja sen on kirjoittanut Bryan Mealy)
- 4 -bittinen laskuri, joka on valmistettu T -varvastossuista
- FSM
Vaihe 3: Pelin tekeminen
Ensimmäinen askel kohti tämän pelin tekemistä oli piirikaavion piirtäminen kaikilla komponenteilla, joita aiomme käyttää. Tämän järjestelmän tulot olivat painike 1, 16 kytkintä ja kello. Lähdöt olivat seitsemän segmentin näyttö ja anodit. Piirustuskaavion piirtämisen jälkeen kirjoitimme yksittäiset lähdetiedostot kullekin komponentille Vivadossa ja koottiin ne yhteen käyttämällä porttikarttoja päälähdetiedoston alle.
Koko pelin perusta pyörii satunnaisesti määrittämällä yksi 16 kytkimestä aktiiviseksi pommin kanssa ja jotta pelaajat eivät tiedä, mikä kytkin on aktiivinen, kunnes aktiivinen kytkin käännetään päälle. Tutkimme satunnaisia ja näennäissatunnaisia numerogeneraattoreita verkossa, mutta päätimme lopulta, että 4-bittisen laskurin käyttäminen ja vastaavan kytkimen asettaminen aktiiviseksi on riittävän satunnainen etsimäämme varten. Pystyimme käyttämään aiemmassa projektissamme luomaamme 4-bittistä laskuria voidaksemme työskennellä tässä tehtävässä. Käytimme laskuria luomaan satunnaisluku välillä 0-15; sitten main1 -komponentissa annoimme satunnaisluvun desimaaliekvivalentin vastaavalle levyn kytkimelle. Kuten kaaviosta nähdään, sekä lähtö X (aktiivinen pommi) pääkomponentista että kytkimet, jotka pelaajat kytkevät päälle, siirtyvät FSM1: een. Tilakone antaa yhden bitin Z -arvon, jonka BC_DEC1 lukee. Käyttämässämme äärellisessä tilakoneessa on kaksi eri tilaa: tilassa A seitsemän segmentin näyttö antaa "PLAY" ja kone pysyy tässä tilassa, kunnes se tunnistaa aktivoidun kytkimen kääntämisen. Kun tämä on tapahtunut, FSM siirtyy tilaan B, jossa se lähettää LOSE -koodin seitsemän segmentin näyttöön ja pysyy siinä tilassa, kunnes kaikki 16 kytkintä käännetään asentoon 0. Kun tämä ehto täyttyy, Mikronesia siirtyy jälleen tilaan A ja odottaa pelaajia aloittamaan uuden pelin. Moore -kaavio tämän FSM: n ymmärtämiseksi on esitetty yllä.
Vaihe 4: Tulevat muutokset
Muutamia muutoksia, joita harkitsimme pelimme tekemiseen, ovat lisätä pommit kentälle (mahdollisesti lisätä yhdestä kolmeen), lisätä pisteet ja useita kierroksia. Päätimme lopulta näitä parannuksia vastaan, koska huomasimme, että pidemmän, laajennetun pelin pelaaminen oli tyypillisesti jännittyneempää ja lopulta hauskempaa kuin peli, joka tyypillisesti päättyi kolmen tai neljän vaihdekierroksen jälkeen.
Vaihe 5: Johtopäätös
Olimme erittäin tyytyväisiä hankkeen lopputulokseen; ei pelkästään siksi, että pelin lopullinen versio oli hauska pelata, vaan myös siksi, että projektin luominen ja ohjelmointi edellytti, että hyödynnämme suurimman osan ellei kaikkea, mitä olemme oppineet tällä vuosineljänneksellä. Käytimme varvastossuja, laskureita, FSM -laitteita, kelloa, käyttäjän syöttämää taulua ja tulosta seitsemän segmentin näyttöön.
Opimme myös, kuinka muutamat syntaksivirheet voivat rikkoa ohjelman kokonaan (vaikka niitä pidettäisiin hyvänä muilla ohjelmointikielillä, kuten Pythonilla tai Javalla), ja että vasta sen jälkeen, kun koodin useita simulaatioita ja toistoja on ladattu ja testattu aluksella, pystytkö vihdoin poistamaan kaikki koodisi virheet.
Suositeltava:
DIY 37 Leds Arduino -rulettipeli: 3 vaihetta (kuvilla)
DIY 37 Leds Arduino Roulette Peli: Ruletti on kasinopeli, joka on nimetty ranskalaisen sanan mukaan, joka tarkoittaa pientä pyörää
Covid -suojakypärä, osa 1: johdanto Tinkercad -piireihin!: 20 vaihetta (kuvilla)
Covid -suojakypärä, osa 1: johdanto Tinkercad -piireihin!: Hei, ystävä! Tässä kaksiosaisessa sarjassa opimme käyttämään Tinkercadin piirejä - hauskaa, tehokasta ja opettavaista työkalua piirien toiminnasta! Yksi parhaista tavoista oppia on tehdä. Joten suunnittelemme ensin oman projektimme: th
Weasleyn sijaintikello neljällä kädellä: 11 vaihetta (kuvilla)
Weasleyn sijaintikello neljällä kädellä: Joten Raspberry Pi: n kanssa, joka oli pyörinyt jonkin aikaa, halusin löytää mukavan projektin, jonka avulla voisin hyödyntää sitä parhaalla mahdollisella tavalla. Löysin ppeters0502 tämän upean Instructable Build Your Own Weasley Location Clockin ja ajattelin, että
Ammattimainen sääasema käyttäen ESP8266- ja ESP32 -DIY: 9 vaihetta (kuvilla)
Ammattimainen sääasema käyttämällä ESP8266- ja ESP32 -DIY: LineaMeteoStazione on täydellinen sääasema, joka voidaan liittää Sensirionin ammattitunnistimiin sekä joihinkin Davis -instrumenttikomponentteihin (sademittari, tuulimittari)
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite