Sisällysluettelo:

Miinanraivaaja: 5 vaihetta (kuvilla)
Miinanraivaaja: 5 vaihetta (kuvilla)

Video: Miinanraivaaja: 5 vaihetta (kuvilla)

Video: Miinanraivaaja: 5 vaihetta (kuvilla)
Video: 3 PARASTA TAPAA HÄVITTÄÄ "HERKKUMAHA"!!! 2024, Heinäkuu
Anonim
Miinanraivaaja
Miinanraivaaja

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

Pelin tekeminen
Pelin tekeminen
Pelin tekeminen
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: