Spisu treści:
Wideo: Konkurencyjna gra na czas VS dla 2 graczy: 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Będziesz potrzebować:
1. Digilent Basys 3, płyta FPGA (lub dowolny inny FPGA)
2. Stosunkowo aktualna wersja Vivado lub innego środowiska VHDL
3. Komputer, na którym można uruchomić wspomniany program.
Krok 1: Sama gra
Jak FSM współdziała z modułami.
Jak grać
Aby rozpocząć, naciśnij środkowy przycisk. Spowoduje to wyświetlenie „99”, reprezentującego zdrowie drugiego gracza, na siedmiosegmentowym wyświetlaczu. Następnie diody LED zaświecą się kolejno od prawej do lewej. To tworzy pasek mocy. Gdy pasek zasilania jest pełny, resetuje się. Celem pierwszego gracza jest przestawienie przełącznika, gdy poprzeczka jest jak najwyżej. Im więcej diod LED się zapali, tym więcej obrażeń gracz jeden zada graczowi drugiemu. Po tym, jak gracz pierwszy przełączy przełącznik, zadane obrażenia są odejmowane od zdrowia drugiego gracza. Następnie przechodzi do tury drugiego gracza. Teraz wyświetlana liczba reprezentuje zdrowie gracza, a pasek mocy wypełnia się od lewej do prawej. Gdy gracz drugi wykona swój ruch, obrażenia są odejmowane i wracają do tury gracza pierwszego. To się powtarza, dopóki jeden gracz nie osiągnie 0 zdrowia. Film przedstawiający to działanie w załączeniu.
Krok 2: FSM
Ta gra jest zasadniczo jedną wielką maszyną skończonych stanów, w której zachodzi pewna złożona logika oparta na stanie, w którym znajduje się FSM.
Stan 1: Menu Pierwszym stanem jest ekran menu, który jest jednym z prostszych stanów. Zawiera siedmiosegmentowy wyświetlacz wyświetlający słowo „PLAY” oraz przycisk uruchamiający grę. Przycisk, BTN, prowadzi nas do następnego stanu, którym jest kolejka gracza.
Stan 2: tura pierwszego gracza
Tura gracza pierwszego aktywuje sygnał, który powoduje, że siedmiosegmentowy wyświetlacz pokazuje zdrowie gracza drugiego. Włącza się kolejny sygnał, aby aktywować rejestr przesuwny zaimportowany z innego modułu, który stworzyliśmy (Pone.vhd). Ten rejestr przesuwny sprawia, że diody LED zapalają się jak rosnący wskaźnik mocy w innych grach, a następnie resetują się do 0, gdy osiągają maksymalną liczbę diod LED, które mogą się świecić. Aktualizuje się na narastającym zboczu zegara uzyskanym z barclock.vhd, który jest modyfikowany z pożyczonego pliku laboratoryjnego. Nasz pasek gracza zaczynał się od prawej strony i wypełniał do lewej, ponieważ przełącznik gracza jest również po lewej stronie (dla intuicyjnej obsługi). Po przełączeniu przełącznika stan przechodzi na gracza o jedną dedukcję, a ilość aktywnych diod LED jest zapisywana w sygnale.
Stan 3: Gracz 1 odliczenie Sygnał z ilością aktywnych diod LED określa ilość zdrowia, która zostanie odliczona. Odbywa się to poprzez posiadanie innego rejestru przesuwnego (deductor1.vhd), który zamiast zwiększać diody LED, zmniejsza je. To zmniejsza się na zboczu narastającym jednego z modułów div zegara, które pożyczyliśmy i zmodyfikowaliśmy (downcounterclock.vhd). Gdy tylko jedna dioda LED jest wyłączona, jeden punkt zdrowia jest odejmowany od całkowitego zdrowia drugiego gracza. Jeśli podczas tego procesu gracz 2 osiągnie 0 zdrowia, zatrzymujemy się i natychmiast przechodzimy do stanu „Koniec gry”. W przeciwnym razie, gdy wektor LED osiągnie „0000000000000000”, przechodzimy do tury drugiego gracza.
Stan 4: Tura gracza drugiego Tura gracza drugiego jest dokładnie taka sama, jak tura gracza pierwszego, z wyjątkiem tego, że rejestr przesuwny dla niego (Ptwo.bhd) przebiega od lewej do prawej, a przełącznik znajduje się po prawej stronie planszy. Aktywuje się sygnał, aby wyświetlić stan zdrowia Gracza 1. Gdy przełącznik 2 jest aktywny, przechodzi do tury odejmowania drugiego gracza.
Etap 5: Odliczenie gracza drugiego Podobnie jak w turze gracza drugiego, odliczenie gracza drugiego działa podobnie jak odliczenie gracza pierwszego. Główną różnicą jest to, że rejestr przesuwny, który kontroluje wyłączanie diody LED, idzie w przeciwnym kierunku, co jest łatwą modyfikacją do wykonania, gdy odliczenie gracza działa poprawnie.
Etap 6: Koniec gry Jeśli w dowolnym momencie któryś z graczy osiągnie zero zdrowia, gra przełącza się w ten stan. Nic wyszukanego. Jeśli naciśniesz BTN jeden, zdrowie zostanie zresetowane do 99, a stan wraca do menu, skutecznie rozpoczynając grę od nowa.
Krok 3: Moduły
Schemat czarnej skrzynki do gry
Downcounterclock (na podstawie modułu clk_div.vhd autorstwa Bryana Mealy):
To jest zegar, który obsługuje odliczanie czasu. Stała o nazwie max_count jest 3 razy większa niż stała max_count w barclock. To sprawi, że deduktory będą 3x wolniejsze niż prędkość paska.
Barclock - (na podstawie modułu clk_div.vhd autorstwa Bryana Mealy):
Ten zegar obsługuje synchronizację wskaźników mocy, które szybko zwiększaliśmy, aby zwiększyć trudność gry. Ten czas można dostosować do własnych upodobań, zwiększając prędkość, zmieniając stałą max_count na większą liczbę lub zmniejszając ją, zmniejszając wartość max_count na mniejszą. Sseg_dec - (napisany przez Bryana Mealy'ego): Ten moduł pobiera 8-bitową liczbę jako dane wejściowe, które dekoduje, konwertując liczbę na jej dziesiętny odpowiednik, a następnie wyświetla na wyświetlaczu siedmiosegmentowym. Aby ten plik działał, musisz upewnić się, że ograniczenia są zgodne z naszymi.
Placek kukurydziany:
Jest to rejestr przesuwny, który przesuwa bity w lewo, dodając jeden gorący bit, aby wyglądało na to, że wskaźnik mocy rośnie. Gdy wszystkie bity są gorące, wszystkie bity są resetowane do „0” i cykl zaczyna się od nowa.
Pdwa:
To jest odwrócona wersja modułu P1.
Odliczacz1:
Jest to połączenie rejestru przesuwnego i odejmowania. Rejestr przesuwny idzie w przeciwnym kierunku niż rejestr przesuwny P1, co wskazuje na dedukcję. Odejmuje to również 1 od zdrowia Gracza 2 za każdy cykl zegara, więc połączenie tych dwóch funkcji będzie wyglądało na to, że zdrowie przeciwnika zmniejsza się o 1 za każdą diodę na pasku zdrowia, która spada.
Deductor2: To jest odwrócona wersja modułu Deductor1.
PlayDecoder (pożyczony i nieznacznie zmodyfikowany z ekchen35649 jego 133 instrukcji): Jest używany w stanie menu do wyświetlania słowa „PLAY” w siedmiosegmentowym dekoderze.
Krok 4: Test
Ta gra została pierwotnie zainspirowana jedną z minigier Kirby. Jest to prosta gra dla dwóch graczy, w którą można grać na płycie Basys 3 lub dowolnym FPGA.
Krok 1: Wymagane materiały
Potrzebne będą: Digilent Basys 3, płytka FPGA (lub jakakolwiek inna) Stosunkowo aktualna wersja Vivado lub jakieś inne środowisko vhdl Komputer, na którym można uruchomić wspomniany program Mózg
Krok 2: Sama gra
Jak grać
Aby rozpocząć, naciśnij środkowy przycisk. Spowoduje to wyświetlenie „99”, reprezentującego zdrowie drugiego gracza, na siedmiosegmentowym wyświetlaczu. Następnie diody LED zaświecą się kolejno od prawej do lewej. To tworzy pasek mocy. Gdy pasek zasilania jest pełny, resetuje się. Celem pierwszego gracza jest przestawienie przełącznika, gdy poprzeczka jest jak najwyżej. Im więcej diod LED się zapali, tym więcej obrażeń gracz jeden zada graczowi drugiemu. Po przełączeniu przełącznika pierwszego gracza, zadane obrażenia są odejmowane od zdrowia drugiego gracza. Następnie przechodzi do tury drugiego gracza. Teraz wyświetlana liczba reprezentuje zdrowie gracza, a pasek mocy wypełnia się od lewej do prawej. Gdy gracz drugi wykona swój ruch, obrażenia są odejmowane i wracają do tury gracza pierwszego. To się powtarza, dopóki jeden gracz nie osiągnie 0 zdrowia. Film przedstawiający to działanie w załączeniu.
Aby zagrać w grę, załaduj ją na planszę bazową i naciśnij środkowy przycisk. Spróbuj przełączyć przełącznik przy jak największej liczbie aktywnych diod LED, a następnie poczekaj i obserwuj, jak tablica odejmuje te punkty od zdrowia przeciwnika. Następnie przekaż go swojemu przyjacielowi i
Krok 3: FSM
Ta gra jest zasadniczo jedną wielką maszyną skończonych stanów, w której zachodzi pewna złożona logika oparta na stanie, w którym znajduje się FSM.
(Diagram stanu)
Stan 1: Menu
Pierwszym stanem jest ekran menu, który jest jednym z prostszych stanów. Zawiera siedmiosegmentowy wyświetlacz wyświetlający słowo „PLAY” oraz przycisk uruchamiający grę. Przycisk, BTN, prowadzi nas do następnego stanu, którym jest kolejka gracza.
Stan 2: tura pierwszego gracza
Tura gracza pierwszego aktywuje sygnał, który powoduje, że siedmiosegmentowy wyświetlacz pokazuje zdrowie gracza drugiego. Włącza się kolejny sygnał, aby aktywować rejestr przesuwny zaimportowany z innego modułu, który stworzyliśmy (Pone.vhd). Ten rejestr przesuwny sprawia, że diody LED zapalają się jak rosnący wskaźnik mocy w innych grach, a następnie resetują się do 0, gdy osiągają maksymalną liczbę diod LED, które mogą się świecić. Aktualizuje się na narastającym zboczu zegara uzyskanym z barclock.vhd, który jest modyfikowany z pożyczonego pliku laboratoryjnego. Nasz pasek gracza zaczynał się od prawej strony i wypełniał do lewej, ponieważ przełącznik gracza jest również po lewej stronie (dla intuicyjnej obsługi). Po przełączeniu przełącznika stan przechodzi na gracza o jedną dedukcję, a ilość aktywnych diod LED jest zapisywana w sygnale.
Stan 3: Odliczenie gracza pierwszego
Sygnał z ilością aktywnych diod LED określa ilość zdrowia, która zostanie odliczona. Odbywa się to poprzez posiadanie innego rejestru przesuwnego (deductor1.vhd), który zamiast zwiększać diody LED, zmniejsza je. To zmniejsza się na zboczu narastającym jednego z modułów div zegara, które pożyczyliśmy i zmodyfikowaliśmy (downcounterclock.vhd). Gdy tylko jedna dioda LED jest wyłączona, jeden punkt zdrowia jest odejmowany od całkowitego zdrowia drugiego gracza. Jeśli podczas tego procesu gracz 2 osiągnie 0 zdrowia, zatrzymujemy się i natychmiast przechodzimy do stanu „Koniec gry”. W przeciwnym razie, gdy wektor LED osiągnie „0000000000000000”, przechodzimy do tury drugiego gracza.
Stan 4: Kolejka gracza drugiego
Tura gracza drugiego jest dokładnie taka sama, jak tura gracza pierwszego, z wyjątkiem tego, że dla niego rejestr przesuwny (Ptwo.bhd) przebiega od lewej do prawej, a przełącznik znajduje się po prawej stronie planszy. Aktywuje się sygnał, aby wyświetlić stan zdrowia Gracza 1. Gdy przełącznik 2 jest aktywny, przechodzi do tury odejmowania drugiego gracza.
Etap 5: Odliczenie gracza drugiego
Podobnie jak w turze gracza drugiego, odliczenie gracza drugiego działa podobnie jak odliczenie gracza pierwszego. Główną różnicą jest to, że rejestr przesuwny, który kontroluje wyłączanie diody LED, idzie w przeciwnym kierunku, co jest łatwą modyfikacją do wykonania po prawidłowym działaniu dedukcji gracza.
Etap 6: Koniec gry Jeśli w dowolnym momencie któryś z graczy osiągnie zero zdrowia, gra przełącza się w ten stan. Nic wyszukanego. Jeśli naciśniesz BTN jeden, zdrowie zostanie zresetowane do 99, a stan wraca do menu, skutecznie rozpoczynając grę od nowa.
Czarna skrzynka
Krok 4: Moduły
Downcounterclock (na podstawie modułu clk_div.vhd autorstwa Bryana Mealy):
To jest zegar, który obsługuje odliczanie czasu. Stała o nazwie max_count jest 3 razy większa niż stała max_count w barclock. To sprawi, że deduktory będą 3x wolniejsze niż prędkość paska.
Barclock - (oparty na module clk_div.vhd autorstwa Bryana Mealy'ego): Ten zegar obsługuje synchronizację wskaźników mocy, które szybko się zwiększały, aby zwiększyć poziom trudności w grze. Ten czas można dostosować do własnych upodobań, zwiększając prędkość, zmieniając stałą max_count na większą liczbę lub zmniejszając ją, zmniejszając wartość max_count na mniejszą. Sseg_dec - (napisany przez Bryana Mealy'ego): Ten moduł pobiera 8-bitową liczbę jako dane wejściowe, które dekoduje, konwertując liczbę na jej dziesiętny odpowiednik, a następnie wyświetla na wyświetlaczu siedmiosegmentowym. Aby ten plik działał, musisz upewnić się, że ograniczenia są zgodne z naszymi.
Pone: Jest to rejestr przesuwny, który przesuwa bity w lewo, dodając jeden gorący bit, aby wyglądało na to, że wskaźnik mocy rośnie. Gdy wszystkie bity są gorące, wszystkie bity są resetowane do „0” i cykl zaczyna się od nowa.
Ptwo: To jest odwrócona wersja modułu P1.
Deductor1: Jest to kombinacja rejestru przesuwnego i odejmowania. Rejestr przesuwny idzie w przeciwnym kierunku niż rejestr przesuwny P1, co wskazuje na dedukcję. Odejmuje to również 1 od zdrowia Gracza 2 za każdy cykl zegara, więc połączenie tych dwóch funkcji będzie wyglądało na to, że zdrowie przeciwnika zmniejsza się o 1 za każdą diodę na pasku zdrowia, która spada.
Deductor2: To jest odwrócona wersja modułu Deductor1.
PlayDecoder (pożyczony i nieco zmodyfikowany z ekchen35649 jego 133 instrukcji):
Jest on używany w stanie menu do wyświetlania słowa „PLAY” w siedmiosegmentowym dekoderze.
Do zrobienia: zdjęcia, wideo
Zalecana:
Płytka Pong dla 2 graczy: 3 kroki
Płytka do ping ponga dla 2 graczy: W tym przewodniku możesz zbudować przenośną grę ponga dla 2 graczy. Ten projekt został stworzony wokół kodu zamieszczonego na GitHub przez Onura Avuna. Podobał mi się ten projekt, mam nadzieję, że spodoba Ci się jego budowanie
Tap Tap Rainbow – gra szybkiej reakcji dla 2 graczy: 4 kroki (ze zdjęciami)
Tap Tap Rainbow – gra z szybką reakcją dla 2 graczy: 2 tygodnie temu moja córka wpadła na genialny pomysł na stworzenie gry z szybką reakcją w kolorach tęczy (jest ekspertem od tęczy :D). Od razu spodobał mi się ten pomysł i zaczęliśmy zastanawiać się, jak przekształcić go w prawdziwą grę. Pomysł był taki. Masz tęczę w
Bezprzewodowy kontroler gier rodzinnych dla 4 graczy: 3 kroki
Bezprzewodowy kontroler gier rodzinnych dla 4 graczy: Jest to bezprzewodowy kontroler w stylu arcade, na którym mogą grać 4 osoby jednocześnie. Jest bezprzewodowa, więc nie musisz przywiązywać komputera do kontrolera używanego przez 5-latki. Cały czas spadają i nie chcę, żeby zniszczyli wszystkie moje zabawki, kiedy
Gra Aruduino LED Szybkie klikanie Gra dla dwóch graczy: 8 kroków
Aruduino LED Game Fast Clicking Two Player Game: Ten projekt jest inspirowany @HassonAlkeim. Jeśli chcesz przyjrzeć się bliżej, oto link, który możesz sprawdzić https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Ta gra jest ulepszoną wersją Alkeima. To jest
Szafka arkadowa dla 4 graczy dla MAME: 32 kroki (ze zdjęciami)
Szafka arkadowa dla 4 graczy dla MAME: To pokaże Ci, jak skonstruowałem szafkę MAME dla 4 graczy. Jest wiele rzeczy, które możesz chcieć dostosować do swoich upodobań. Pokażę ci, jak stworzyłem swoją, możesz ją dostosować do własnych upodobań. Mieści się w nim standardowe okno