Tak mi się spodobało pisanie w Java Scripcie, że trzasnąłem następną gierkę. Jest to znana wszystkim układanka Tetris. Gra jest osadzona na podstronie mojego CMS-a, podobnie zresztą jak poprzednia gra, Snake. Udało mi się uzyskać w miarę zgrabny kod, z którego jestem całkiem zadowolony. Aczkolwiek jest jedna rzecz, do której bym mógł się przyczepić - algorytm obracania figur. Bazuje on na 2-wymiarowych macierzach 3x3 i gdybym chciał w przyszłości dodać figury o większych rozmiarach, algorytm należałoby przerobić na bardziej uniwersalny, obsługujący figury dowolnej wielkości. Dało mi to do myślenia i właśnie się nad tym głęboko zastanawiam... Może coś wymyślę, a tymczasem zapraszam do zagrania on-line: http://angular-cms.pl/page/21
PS: Już wymyśliłem - wystarczy zwykła transpozycja kolumn i wierszy w odpowiedniej kolejności.
Obrót w lewo:
for (i = 0; i < this.size; i++) { for (j = 0; j < this.size; j++) { this.shape.map[i][j] = map[this.size - j - 1][i]; } }Obrót w prawo:
for (i = 0; i < this.size; i++) { for (j = 0; j < this.size; j++) { this.shape.map[i][j] = map[j][this.size - i - 1]; } }gdzie map[][] jest mapą figury przed transformacją.
PS: Można tworzyć własne figury i je dodawać do puli klocków - wystarczy wpisać w konsoli coś takiego, jak na przykład:
shapes.push({ map: [[1, 1, 1, 1, 0], [1, 0, 0, 0, 0], [1, 1, 1, 0, 0], [1, 0, 0, 0, 0], [1, 1, 1, 1, 1]], color: 'brown' });
Brak komentarzy:
Prześlij komentarz