Płytki Tetris są przechowywane jako macierz boolowska 4x4. Każdy krok obrotu ma własną matrycę, reprezentacja bloku T- Block wyglądałaby następująco:
[
0, 0, 0, 0,
0, 1, 1, 1,
0, 0, 1, 0,
0, 0, 0, 0
],
[
0, 0, 1, 0,
0, 0, 1, 1,
0, 0, 1, 0,
0, 0, 0, 0
],
[
0, 0, 1, 0,
0, 1, 1, 1,
0, 0, 0, 0,
0, 0, 0, 0
],
[
0, 0, 1, 0,
0, 1, 1, 0,
0, 0, 1, 0,
0, 0, 0, 0
]
Próbuję znaleźć sposób, aby obliczyć pozycję bloku, gdy jest on obracany i zderza się z płytką (tablica jest również matrycą). Pierwotny Tetris po prostu nie pozwalałby na obrót bloku, gdy obrót spowodowałby kolizję. Nowoczesne warianty gry rozstrzygną kolizję i przestawią blok na prawidłową pozycję.
Oto kilka sytuacji, które należy rozwiązać. Plansza ma wymiary 6 x 6, czerwony = aktywny blok, szary = umieszczone / zajęte bloki. Za każdym razem należy wykonać obrót w lewo. Zielona nakładka wskazuje macierz dla bloku. Strzałka wskazuje wynikową korektę rozwiązującą obrót:
- Blok znajduje się po lewej stronie planszy. Ponieważ blok nie może opuścić planszy, po obrocie należy go przenieść z powrotem do środka.
- Zablokuj trafienia „na ziemi”, ale nie zostało jeszcze umieszczone / popełnione. W takim przypadku kafelek musi zostać przesunięty w górę, aby rozwiązać kolizję (w przypadku blokady „I” ruch byłby o 2 komórki w górę).
- Płytka uderzy w zajmowane bloki, musi zostać przesunięta w lewo, aby rozwiązać kolizję.
- Płytki nie można obracać.
Jakie byłoby najlepsze podejście do rozwiązania tego problemu? Optymalnie rozwiązanie powinno być ogólne, np. pracować z dowolnymi blokami macierzy 4x4 na dowolnej wielkości i wypełnionej płycie.
Odpowiedzi:
Opisana sytuacja nazywa się „ kopnięciem w ścianę ”.
...
Istnieje wiele systemów rotacji Tetris, wszystkie udokumentowane na Wikia: Rotation Systems
SRS jest „oficjalną” specyfikacją Tetris i ma dość skomplikowany algorytm do kopnięć w ścianę z wykorzystaniem tabel. Ostatni kawałek może w ogóle nie pokrywać się z oryginalnym!
System rotacji DTET rozszerza najprostszy algorytm, sprawdzając pięć innych kopnięć w ścianę oprócz prawej i lewej. Wszystkie elementy podlegają tym samym zasadom.
źródło