Spisu treści:

Saper: 5 kroków (ze zdjęciami)
Saper: 5 kroków (ze zdjęciami)

Wideo: Saper: 5 kroków (ze zdjęciami)

Wideo: Saper: 5 kroków (ze zdjęciami)
Wideo: Saper - K.O (prod. Dodowhatstheword & Ayoway)[🎥_marcino/Adasio] 2024, Listopad
Anonim
Saper
Saper

W naszym ostatecznym projekcie CPE 133, Chase i ja zdecydowaliśmy się stworzyć grę „Saper”, która wykorzystywała przycisk i przełączanie danych wejściowych z płyty Basys-3, a także kod VHDL. Lepszą nazwą gry mogłaby być „Rosyjska Ruletka”, jednak chcieliśmy wybrać nazwę bardziej przyjazną rodzinie. Gra polega na naciśnięciu środkowego przycisku na tablicy Basys, aby losowo przypisać jeden z 16 przełączników jako „aktywny” z bombą. Dwóch graczy na zmianę podnosi przełączniki, po jednym na raz, aż jeden z graczy przestawi przełącznik za pomocą „bomby”. Kiedy tak się dzieje, siedmiosegmentowy wyświetlacz ostrzega graczy, że ten gracz właśnie przegrał grę.

Krok 1: Przegląd

W projekcie wykorzystano wiele modułów VHDL, z których korzystaliśmy w ciągu tego kwartału. Licznik czterobitowy został użyty w połączeniu z krawędzią zegara w celu symulacji losowej liczby czterobitowej w celu aktywacji jednego z przełączników. Użyto również diagramu stanu, aby wyświetlić różne słowa na siedmiosegmentowym wyświetlaczu, od „GRAJ”, gdy gracze są w środku gry, do „PRZEGRAJ”, gdy jeden z graczy przestawił aktywny przełącznik.

Krok 2: Materiały

  • Płytka rozwojowa Basys3 firmy Digilent, Inc.
  • Vivado Design Suite BC_DEC.vhd (Ten plik został dostarczony na Polylearn i został napisany przez Bryana Mealy)
  • 4-bitowy licznik wykonany z przerzutników T
  • FSM

Krok 3: Tworzenie gry

Tworzenie gry
Tworzenie gry
Tworzenie gry
Tworzenie gry

Pierwszym krokiem w kierunku stworzenia tej gry było narysowanie schematu obwodu ze wszystkimi komponentami, których będziemy używać. Wejściami dla tego systemu były przycisk 1, 16 przełączników i zegar. Wyjściami były siedmiosegmentowy wyświetlacz i anody. Po narysowaniu schematu obwodu napisaliśmy indywidualne pliki źródłowe dla każdego komponentu w Vivado i połączyliśmy je za pomocą map portów pod głównym plikiem źródłowym.

Cała podstawa gry kręci się wokół losowego przypisania jednego z 16 przełączników, aby był aktywny z bombą, i aby gracze nie wiedzieli, który przełącznik jest aktywny, dopóki ten aktywny przełącznik nie zostanie włączony. Przyjrzeliśmy się generatorom liczb losowych i pseudolosowych online, ale ostatecznie zdecydowaliśmy, że użycie 4-bitowego licznika i przypisanie odpowiedniego przełącznika jako aktywnego jest wystarczająco losowe dla tego, czego szukaliśmy. Udało nam się zmienić przeznaczenie naszego 4-bitowego licznika, który stworzyliśmy w poprzednim projekcie, aby móc pracować nad tym zadaniem. Użyliśmy licznika do stworzenia losowej liczby pomiędzy 0-15; następnie w składniku main1 przypisaliśmy dziesiętny odpowiednik liczby losowej do odpowiedniego przełącznika na tablicy. Jak widać na schemacie, zarówno wyjście X („aktywna bomba”) z komponentu main1, jak i przełączniki, które włączają gracze, przechodzą do FSM1. Automat stanów wyprowadza jednobitową wartość Z, która jest następnie odczytywana przez BC_DEC1. Maszyna skończona, której używaliśmy, ma dwa różne stany: w stanie A siedmiosegmentowy wyświetlacz wyświetla „PLAY”, a maszyna pozostaje w tym stanie, dopóki nie rozpozna, że aktywowany przełącznik jest przestawiony. Gdy to się stanie, FSM przechodzi do stanu B, w którym wysyła „LOSE” na siedmiosegmentowy wyświetlacz i pozostaje w tym stanie, dopóki wszystkie 16 przełączników nie zostanie przestawionych na „0”. Gdy ten warunek zostanie spełniony, FSM ponownie przechodzi do stanu A i czeka na graczy, aby rozpoczęli kolejną grę. Diagram Moore'a, który pomoże zrozumieć ten FSM, pokazano powyżej.

Krok 4: Przyszłe modyfikacje

Kilka modyfikacji, które rozważaliśmy nad wprowadzeniem do naszej gry, to dodanie większej liczby bomb na polu bitwy (prawdopodobnie zwiększenie z jednej do trzech), dodanie licznika wyników i wielu rund. Ostatecznie zdecydowaliśmy się zrezygnować z tych ulepszeń, ponieważ okazało się, że granie w dłuższą, dłuższą grę zazwyczaj było bardziej napięte i ostatecznie bardziej zabawne niż gra, która zwykle kończyła się po trzech lub czterech przewrotach przełącznika.

Krok 5: Wniosek

Byliśmy bardzo zadowoleni z efektu końcowego tego projektu; nie tylko dlatego, że ostateczna wersja gry była fajna, ale także dlatego, że tworzenie i programowanie projektu wymagało od nas wykorzystania większości, jeśli nie wszystkiego, czego nauczyliśmy się w tym kwartale. Wykorzystaliśmy przerzutniki, liczniki, FSM, zegar, dane wejściowe użytkownika z płyty i wyjście na siedmiosegmentowy wyświetlacz.

Dowiedzieliśmy się również, w jaki sposób kilka błędów składniowych może całkowicie zepsuć program (nawet jeśli zostałyby uznane za dobre w innych językach programowania, takich jak Python lub Java) i że dopiero po wielu symulacjach i wielu iteracjach kodu przesyłanego i testowanego na forum, czy w końcu będziesz w stanie usunąć wszystkie błędy ze swojego kodu.

Zalecana: