Logiczna gra z owockami

Mój w założeniu miesięczny projekt przeciągnął się do pół roku, a do zrobienia zostało mi jeszcze dużo. Główne mechaniki są już sfinalizowane i zrobiłem już setki poziomów, więc dzielę się grą ze Światem, bo naprawdę jest w co pograć.

Chciałem zrobić od podstaw zupełnie nową grę logiczną, z mechaniką jakiej jeszcze nigdy nie spotkałem. Łatwo skopiować czyjąś sprawdzoną i szeroko przyjętą mechanikę i zrobić dzięki temu w miarę grywalną gierkę. Moje podejście było jednak odmienne. Wziąłem koncepcję, którą wszyscy znają i zaprojektowałem do niej własne zasady, które są nie tylko ciekawe, ale też pozwalają na utworzenie całego spektrum poziomów trudności. W swojej grze mam poziomy bardzo proste i podstawowe, poprzez średniej trudności, na trudnych i bardzo trudnych kończąc. Plansza gry wypełniona jest owocami, które trzeba zbić, ale zbija się je w nietypowy sposób.

Klikasz na owocka i w ten sposób zaznaczasz go. Następnie klikasz na drugiego takiego samego owocka, który znajduje się w tej samej linii. Może to być ta sama kolumna, wiersz albo przekątna. Po kliknięciu drugiego owocka, te dwa owocki, oraz wszystkie pomiędzy nimi, znikają.

Na poniższym przykładzie zaznaczam kokosa w prawym górnym rogu.

Następnie, po kliknięciu na dolnego prawego kokosa – wisienki, kokos oraz banan znajdujące się pomiędzy dwoma wybranymi przeze mnie kokosami zostają zbite razem z nimi.

Można zbijać owoce na różne sposoby, w różnej kolejności i różnie dobierać pary owoców, przez co powstaje multum możliwości. Proste plansze można przejść na wiele różnych sposobów. W trudniejszych planszach trzeba więcej pomyśleć, bo losowe klikanie może szybko doprowadzić nas do sytuacji, w której na planszy zostaną nam owoce nie do zbicia. Żeby przejść poziom i otrzymać trzy gwiazdki, trzeba zbić wszystkie owoce.

W grę jak na razie grało około 80 osób i odzew od nich był naprawdę pozytywny, więc zachęcam do zagrania 🙂 Można zagrać na komputerze, tablecie czy telefonie. Jest to gra na przeglądarkę. Podczas jej tworzenia używałem przeglądarki Chrome i wiem, że gra działa dobrze zarówno na komputerowej wersji Chrome jak i na mobilnej na Androidzie.

Zagraj pod adresem:

owocki.tymski.pl

 

 

Allegro.js

Czym jest Allegro.js?

Allegro.js to biblioteka JavaScript napisana przez Sosa Sosowskiego. Przepisał on stare, poczciwe Allegro4, aby można było go używać do pisania gier przeglądarkowych, kompatybilnych z HTML5. Nasze aplikacje zadziałają więc na komputerze, smartfonie i tablecie. Na stronie domowej biblioteki, możemy przeczytać, że allegro.js nie jest zorientowane obiektowo oraz że można używać go za darmo. Jest tam też dostępny tutorial.

Pong

Moja pierwsza gra w allegro.js to prosty Pong, inspirowany między innymi grą Jardinains. Poruszamy się paletką za pomocą strzałek i staramy się zdobyć jak najwięcej punktów odbijając spadające klocki. Im dłużej odbijamy konkretny klocek, tym więcej punktów on daje. Po kilku odbiciach dostajemy też bonus – poszerzenie paletki lub dodatkowe punkty.

Aby zagrać, kliknij w ten link.

Skrót implementacji

Implementacja używa zwykłych tablic, w których znajdują się struktury. Dla przykładu tablica klocki[] posiada pola: x, y, vx, vy, width, height zapamiętujące pozycję, prędkość i rozmiar każdego klocka. Dodatkowo w strukturze mam zmienne boolowskie(prawda albo fałsz), aby sprawdzić, czy klocek jest zbity.

Kolizje ze ścianami bocznymi: Jeśli klocek wyleciał za daleko, czyli jego pozycja w osi X, jest większa od szerokości ekranu lub jest mniejsza od zera, mnożę jego prędkość razy minus jeden, przez co klocek zawraca, gdy spotyka krawędź ekranu.

Kolizja klocka z paletką nie jest aż tak prosta. Musimy bowiem nadać klockowi pewną prędkość zależną od miejsca, w którym zderzył się z paletką. Im bliżej środka rakietki, tym mniejszy kąt odbicia (klocek.vx zależy od klocek.x-paletka.x).
Samo sprawdzenie czy kolizja wystąpiła, można przeprowadzić następująco: