Dzięki za opinię.
4. Poprawiłeś uciekanie przed spadającym kamieniem? Jeśli stoimy bezpośrednio pod kamieniem i zaczniemy biec w dół, to kamień nas doganiał od razu w poprzedniej wersji. Ktoś też o tym pisał wtedy.
Nie jestem pewien jak miałbym to poprawić. Kamień zawsze doścignie bohatera, ten nie ma szansy na ucieczkę idąc w dół gdy kamień znajduje się bezpośrednio nad nim.
Obecnie zastanawiałem się nad małą przeróbką logiki gry, wprowadziłem deklarację ruchu, żeby uprościć skanowanie - by każdy obiekt był procesowany raz.
Zatem skanowanie składa się z 3 faz:
1. Procesowanie elementów - to tutaj elementy
deklarują ruch na sąsiednie pole (kamień, diament, bohater, ognik, motyl), bądź tworzenie elementów na sąsiednich polach (wybuch, ameba, magiczna ściana),
2. Kontrola ruchu i kolizja elementów - to tutaj wykonywany jest ruch obiektów i wykrywanie kolizji, wywoływanie funkcji obsługi kolizji (bohater zbiera diament, pcha kamień itp.),
3. Obsługa animacji elementów - ustalanie klatek animacji.
Zatem plansza/obiekty skanowane są najpierw pod kątem wewnętrznej logiki. Później w drugim przebiegu ruch jest wykonywany. Dzięki temu też kamień najpierw spada, a potem sprawdzane jest popychanie kamienia.
Rekurencja jest nadal potrzebna, przy pchaniu kamienia, lub przy spadaniu sterty kamieni, ale jest znacznie uproszczona i wykonywana w drugiej fazie. Nie muszę też anulować skanowania elementu, który znika podczas rekurencji!
Wczoraj to programowałem, ale jeszcze nie ogarnąłem całości.
Będę chciał wprowadzić ogniki oraz wybuch (kłąb dymu) tworzony na sąsiednich polach, więc chciałem uprościć dotychczasowy algorytm rekurencyjny.
Ogólnie wychodzi nieco bardziej skomplikowany algorytm niż w przypadku Boulder Dasha.
Ostatnia aktualizacja: 18.09.2024 11:17:48 przez Hexmage960