Obsah:

Hledání min: 5 kroků (s obrázky)
Hledání min: 5 kroků (s obrázky)

Video: Hledání min: 5 kroků (s obrázky)

Video: Hledání min: 5 kroků (s obrázky)
Video: KDE HLEDAT KVALITNÍ OBRÁZKY PRO WEB 2024, Listopad
Anonim
Minolovka
Minolovka

Pro náš finální projekt CPE 133 jsme se Chase a já rozhodli vytvořit hru „Hledání min“, která využívala tlačítka a přepínání vstupu z desky Basys-3 a také VHDL kódu. Lepším názvem hry by mohla být ruská ruleta, ale my jsme chtěli jít s rodinnějším názvem. Hra zahrnuje uživatele tím, že stiskne prostřední tlačítko na desce Basys a náhodně přiřadí jeden ze 16 přepínačů jako „aktivní“s bombou. Dva hráči pak střídavě obracejí spínače, jeden po druhém, dokud jeden z hráčů nepřepne vypínač s „bombou“. Když k tomu dojde, sedmisegmentový displej upozorní hráče, že daný hráč právě prohrál hru.

Krok 1: Přehled

Projekt využil mnoho modulů VHDL, které jsme využili v průběhu tohoto čtvrtletí. Ve spojení s hodinovou hranou byl použit čtyřbitový čítač za účelem simulace náhodného čtyřbitového čísla pro aktivaci jednoho z přepínačů. Stavový diagram byl také použit k výstupu různých slov na sedmisegmentový displej, od „PLAY“, když jsou hráči uprostřed hry, až po „LOSE“, když jeden z hráčů přepnul aktivní přepínač.

Krok 2: Materiály

  • Vývojová rada Basys3 od společnosti Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (Tento soubor nám byl poskytnut na Polylearn a napsal jej Bryan Mealy)
  • Čtyřbitový čítač vyrobený z T žabek
  • FSM

Krok 3: Vytvoření hry

Vytváření hry
Vytváření hry
Vytváření hry
Vytváření hry

Prvním krokem k vytvoření této hry bylo nakreslení schématu zapojení se všemi součástmi, které budeme používat. Vstupy pro tento systém byly tlačítko 1, 16 přepínačů a hodiny. Výstupy byly sedmisegmentový displej a anody. Po nakreslení schématu zapojení jsme napsali jednotlivé zdrojové soubory pro každou součást ve Vivadu a spojili je pomocí map portů pod hlavním zdrojovým souborem.

Celý základ hry se točí kolem náhodného přiřazení jednoho ze 16 přepínačů k aktivaci pomocí bomby a pro hráče, aby nevěděli, který přepínač je aktivní, dokud tento aktivní spínač nezapnete. Podívali jsme se na generátory náhodných a pseudonáhodných čísel online, ale nakonec jsme se rozhodli, že použití 4bitového čítače a přiřazení aktivního odpovídajícího přepínače je dostatečně náhodné pro to, co jsme hledali. Byli jsme schopni znovu použít náš 4bitový čítač, který jsme vytvořili v předchozím projektu, abychom mohli pracovat pro toto přiřazení. Pomocí čítače jsme vytvořili náhodné číslo mezi 0-15; pak jsme v komponentě main1 přiřadili desítkový ekvivalent náhodného čísla jeho odpovídajícímu přepínači na desce. Jak je vidět na schématu, výstup X („aktivní bomba“) z komponenty main1 a přepínače, které hráči zapnou, přejdou na FSM1. Stavový stroj vydává jednobitovou hodnotu Z, která je poté načtena BC_DEC1. Stroj konečných stavů, který jsme použili, má dva různé stavy: ve stavu A sedm segmentových displejů vydává „PLAY“a stroj zůstává v tomto stavu, dokud nerozpozná, že aktivovaný přepínač je překlopen. Jakmile se to stane, FSM přejde do stavu B, kde vysílá „LOSE“na sedmisegmentový displej a zůstává v tomto stavu, dokud není všech 16 přepínačů přepnuto na „0“. Když je tato podmínka splněna, FSM pak znovu přejde do stavu A a čeká na hráče, aby zahájili další hru. Mooreův diagram, který pomůže porozumět tomuto FSM, je uveden výše.

Krok 4: Budoucí úpravy

O několika úpravách, které jsme zvažovali o provedení naší hry, patří přidání dalších bomb do pole (možná zvýšení z jedné na tři), přidání počítadla skóre a více kol. Nakonec jsme se proti těmto vylepšením rozhodli, protože jsme zjistili, že hraní delší a delší hry bylo obvykle napjatější a nakonec zábavnější než hra, která obvykle skončila po třech nebo čtyřech přepnutích přepínačů.

Krok 5: Závěr

S konečným výsledkem tohoto projektu jsme byli velmi spokojeni; nejen proto, že konečná verze hry byla zábavná, ale také proto, že tvorba a programování projektu vyžadovalo, abychom využili většinu, ne -li vše, co jsme se v tomto čtvrtletí naučili. Využili jsme žabky, čítače, FSM, hodiny, vstup uživatele z desky a výstup na sedmisegmentový displej.

Také jsme se dozvěděli, jak by několik syntaktických chyb mohlo program úplně rozbít (i když by byly v jiných programovacích jazycích, jako je Python nebo Java považovány za v pořádku), a že až po několika simulacích a více iteracích kódu, který se nahraje a otestuje na deska, budete konečně schopni vyřešit všechny chyby z vašeho kódu.

Doporučuje: