Wyjaśnienie pracy gry.

0

Witam, analizuję grę http://psnbtech.blogspot.com/2012/10/tutorial-java-tetris-game.html. Rozumiem wszystko za wyjątkiem występowania kolizji. Tzn mamy w dwuwymiarowych tablicach 16 , 9 i 4 elementowych(zależy od klocka) zapisane wybrane elementy za pomocą true i false. Wszystko ok, ale w jaki sposób zaznaczamy np. granice ramki i uniemożliwiamy wyjście za pole gry ? Z góry dziękuję za szybką pomoc.

Już wgl by było idealnie, gdyby ktoś pokusił się o wytłumaczenie logiczne gry.

Czy mi się zdaje, czy jest błąd i wystarczy ustawić te cegiełki w jednej lini bez względu na kolor i i tak nam usunie linie ?

Jeśli tak, to czy zna ktoś sposób na naprawienie tego ?

0

Czy może ktoś pomóc ? Bardzo mi zależy na czasie, sorry za odświeżanie. Szukam w necie informacji ale nie wiem jak rozwiązać ten problem, ponadto nie wiem czy moja gra działa na tej samej zasadzie co te opisane w sieci.

0

Zadaj konkretne pytanie do konkretnego fragmentu kodu. Mamy od nowa Ci wszystko wytłumaczyć?

Czarny Pomidor napisał(a):

Czy mi się zdaje, czy jest błąd i wystarczy ustawić te cegiełki w jednej lini bez względu na kolor i i tak nam usunie linie ?

WTF?! Grałeś kiedyś w tetrisa? Kolory są tylko dekoracyjnie, ich układanie nie jest celem gry

0

Dobra, może opiszę jak rozumiem sposób działania gry, a wy ewentualnie skorygujecie moje błędy.
Na początku tworzymy tablice bool'owska dwuelementowa i zapisujemy do niej 0. Tak jak wspomniałem mamy zdefiniowane części w 6 , 9 i 4-elementowych tablicach(zależy od klocka) za pomocą true or false. Gdy zaczyna się gra sprawdzamy, czy jest możliwe dodanie nowej części poprzez ten cień, który wyświetla się najniżej możliwie. Jeśli taka możliwość istnieje to przesuwamy tablice w dół o jeden, i np. po pierwszym spadku klocka w kształcie L dół naszej planszy wygląda tak:
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 T 0 0 0 0
0 0 0 0 T 0 0 0 0
0 0 0 0 T T 0 0 0
Przy wszelkich rotacjach i przesuwaniach lecącego przedmiotu sprawdzamy jedynie możliwości dla tego cienia, który tak jak wspomniałem znajduje się możliwie nisko. Mam pytanie - czy boki i podłoga planszy są zapisane np. jako wartość T i wtedy nasz mechanizm bierze to jako element i nie pozwala na niższe zejście lub tez przesuniecie w prawo w przypadku ściany bocznej, czy tam po prostu kończy się tablica i nie ma innej możliwości ? Pewnie mam dużo złych interpretacji, więc będę wdzięczny za szybkie poprawienie mnie i wyjaśnieniu zasady działania.

0

Pomoże ktoś?

0

Kodu nie sprawdzałem ale jeśli ktoś tworzyłby sztuczne ściany gdy tablica to ogranicza to bym się zdziwił lekko.

Ponadto

Czarny Pomidor napisał(a):

Na początku tworzymy tablice bool'owska dwuelementowa i zapisujemy do niej 0.

Prawdopodobnie to jest jednak tablica dwuwymiarowa :)

0

Najważniejsza jest metoda isValidAndEmpty klasy BoardPanel, która sprawdza czy klocek (jego nowa pozycja) nie wyszedł poza planszę- porównując pozycję klocka i jego rozmiary do rozmiarów planszy (stałe COL_COUNT, ROW_COUNT), a potem czy nowa pozycja klocka nie koliduje z już zajętą pozycją. Czyli nie, nie ma sztucznej ściany.
Cień jest rysowany niezależnie (klasa BoardPanel od linii 342), i używa tej samej metody (logiczne).

1 użytkowników online, w tym zalogowanych: 0, gości: 1