Spisu treści:
- Krok 1: Przegląd
- Krok 2: Materiały
- Krok 3: Tworzenie gry
- Krok 4: Przyszłe modyfikacje
- Krok 5: Wniosek
Wideo: Saper: 5 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
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
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:
Kask ochronny Covid, część 1: wprowadzenie do obwodów Tinkercad!: 20 kroków (ze zdjęciami)
Kask ochronny Covid, część 1: wprowadzenie do obwodów Tinkercad!: Witaj, przyjacielu! W tej dwuczęściowej serii nauczymy się korzystać z obwodów Tinkercad - zabawnego, potężnego i edukacyjnego narzędzia do nauki działania obwodów! Jednym z najlepszych sposobów uczenia się jest robienie. Dlatego najpierw zaprojektujemy nasz własny projekt: th
Saper-Raspberry-Pi-Edition: 7 kroków (ze zdjęciami)
Saper-Raspberry-Pi-Edition: Mój ostatni projekt dla serii CSC 130 na Louisiana Tech University to Saper Raspberry Pi Edition. W tym projekcie starałem się odtworzyć klasyczną grę w Saper, wykorzystując bibliotekę Tkinter programowania w Pythonie
Licznik kroków - Micro:Bit: 12 kroków (ze zdjęciami)
Licznik kroków - Micro:Bit: Ten projekt będzie licznikiem kroków. Do pomiaru kroków użyjemy czujnika przyspieszenia wbudowanego w Micro:Bit. Za każdym razem, gdy Micro:Bit się trzęsie, dodamy 2 do licznika i wyświetlimy go na ekranie
Bolt - DIY Wireless Charging Night Clock (6 kroków): 6 kroków (ze zdjęciami)
Bolt - DIY Wireless Charging Night Clock (6 kroków): Ładowanie indukcyjne (znane również jako ładowanie bezprzewodowe lub ładowanie bezprzewodowe) to rodzaj bezprzewodowego przesyłania energii. Wykorzystuje indukcję elektromagnetyczną do dostarczania energii elektrycznej do urządzeń przenośnych. Najpopularniejszym zastosowaniem jest stacja ładowania bezprzewodowego Qi
Jak zdemontować komputer za pomocą prostych kroków i zdjęć: 13 kroków (ze zdjęciami)
Jak zdemontować komputer za pomocą prostych kroków i zdjęć: To jest instrukcja demontażu komputera. Większość podstawowych komponentów ma budowę modułową i jest łatwa do usunięcia. Jednak ważne jest, abyś był w tym zorganizowany. Pomoże to uchronić Cię przed utratą części, a także ułatwi ponowny montaż