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:
Składnia: [ Pobierz ] [ Ukryj ]
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. :D
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ć.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/