Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 17 kwi 2024, o 00:57


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 1 sie 2021, o 07:42 
Offline
Nowy

Dołączył(a): 28 maja 2021
Posty: 21
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sie 2021, o 16:47 
Offline
Nowy

Dołączył(a): 27 lut 2021
Posty: 23
Zbananowany użytkownik

Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 sie 2021, o 16:34 
Offline
Nowy

Dołączył(a): 28 maja 2021
Posty: 21
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO