ATNEL tech-forum https://forum.atnel.pl/ |
|
TETRIS na matrycy 8x50. https://forum.atnel.pl/topic23867.html |
Strona 1 z 1 |
Autor: | LukMeks [ 1 sie 2021, o 07:42 ] |
Tytuł: | TETRIS na matrycy 8x50. |
Cześć. Próbuję zorganizować grę Tetris na gotowej matrycy z 10 modułami 5x8 LED sterowanymi po dwa przez 74hc573. Obsługa będzie się odbywać pilotem. Atmega 164. Zawartość matrycy będzie odczytywana z tablicy. Przerwanie będzie gasić wyświetlacz, ładować wartość kolejnego elementu tablicy, zatrzaskiwać itd. Klocki mam opisane w 19 strukturach: język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Chciałbym wyrobić się w jednej funkcji do obsługi klocków. Klocek będzie przesuwał się po tablicy sprawdzając zawartość następnej komórki( czy jest pusto ). Dojdzie jeszcze liczenie punktów (całych linii) , najlepszy wynik, zmiana prędkości, przesuwanie lewo i prawo itp. Takie są plany. W związku z tym proszę o radę jak można by wrzucić strukturę klocek do funkcji. Struktura ma 6 elementów i będzie wybierana losowo. Może użyć ENUM, może przekazywać jako wartości ale to zagęści kod. Nie jestem za biegły we wskaźnikach a co dopiero w strukturach jako argument funkcji. |
Autor: | embedownik [ 1 sie 2021, o 16:47 ] |
Tytuł: | Re: TETRIS na matrycy 8x50. |
Odpowiadając na pytania - Zgrupuj dostępne klocki w tablicę takich struktur i w funkcji losującej generuj index klocka z tej tablicy - z tego co widzę pola nie będą modyfikowane (choć z kodu ciężko mi wywnioskować co one oznaczają), tak? Przekazywanie do kolejnych funkcji przez wskaźnik - lub możesz też używać tego indeksu (i tak - ten indeks może być enumen) i tylko go przekazywać. Generalnie na tym etapie przed tobą jest masa decyzji "projektowo/implementacyjnych" do podjęcia - bez szerszego kontekstu jak widzisz algorytm działania porady odnośnie szczegółów implementacyjnych mogą być nietrafione/utrudnić tylko. Dam Ci też małą podpowiedź - jakbyś podzielił swoje oprogramowanie na warstwy to miałbyś coś takiego: 1. logika gry 2. konwerter bufora z planszy na dane do LCD/matryc 3. biblioteka LCD/matryc i punkty 1 i 2 możesz napisać całkowicie w C na PC i wtedy w miejsce 3 wstawić wyświetlanie na konsoli. |
Autor: | LukMeks [ 26 sie 2021, o 16:34 ] |
Tytuł: | Re: TETRIS na matrycy 8x50. |
Hej. Po długim czasie udało się zrobić Tetrisa plus psycho-test i ruletkę. Dojdzie jeszcze jakaś strzelanka. Proszę o sprawdzenie przerwania, które odpowiada za multipleksowanie. Wyświetlacz/cała matryca składa się z 10 pojedynczych matryc 8x5 led. Katody matryc ( 8 ) są sterowane po dwie z przerzutników typu D czyli, że jest ich 5 co daje 8 pinów danych i 5 pinów zatrzasków. Wejścia odwracającego nie wykorzystuję. Anody matryc (też po dwie czyli 10) zasilane są z tranzystorów BD co daje kolejne 10 pinów. Całość jest sterowana z Atmegi 164. Funkcję przerwania rozwiązałem tak, że zastosowałem bufor 50 - elementowy ( bo wyświetlacz jest ustawiony jako kolumna o wysokości 50 linii i szerokości 8), wyłączam katody, ładuję po kolei na przerzutniki co 10-tą wartość bufora licząc od 0 zatrzaskując ją na każdym( wykorzystuje je jako pamięć ), a następnie załączam odpowiednią anodę (co 10-tą), następuje inkrementacja licznika ładowanej komórki tablicy bufora i wszystko leci od nowa w kolejnym przerwaniu. Gdy licznik osiągnie wartość większą niż 9 (czyli załaduję 9, 19, 29, 39 i 48 bajt to sie zeruje. Na moje oko działa ok. Proszę o sprawdzenie czy tak to powinno wyglądać. |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |