Jakiś czas temu napisałem dla kolegi (kolega - ujawnij się) program, dzięki któremu mógłby popróbować różne algorytmy dla potworków w grze typu Bomberman; Ale nie tylko - w sumie stanowi także implementację ruchu postaci gracza, która to wyrównywana jest do kafli planszy;
A że ostatnio przy okazji dyskusji na forum przypomniałem sobie o nim, pasuje podzielić się kodem - może kiedyś się komuś przyda; Programu nie zamierzam rozwijać, dlatego też nie wrzucam źródeł na GitHub czy inne, bo po co;
Zrzut ekranu z działającej aplikacji:
Program działa w zwykłym trybie okienkowym, wszystko malowane jest bezpośrednio na kanwie formularza (brak komponentów); Aplikacja działa w oparciu o zwykły timer z interwałem 30ms
, co daje średnio 33FPS
; Kod "gry" zapisany jest w module BombermanGame.pp
- w nim też znajduje się klasa TGame
, która zajmuje się obsługą wszystkiego (z niej korzysta klasa formularza);
Sterowanie jest banalne - postać gracza (zielona) cały czas podąża za kursorem, więc aby nim sterować, należy po prostu przesuwać kursor po formularzu; Potworek natomiast chodzi automatycznie; Do dyspozycji jest pięć różnych algorytmów ruchu potworka - od najgłupszego (klawisz F1
) do najbardziej cwanego (klawisz F5
); Opisy tych algorytmów znajdują się w komentarzach w kodzie (moduł BombermanGame.pp
, od linii 974
); Jeśli nastąpi kolizja gracza z potworkiem, program na chwilę się zatrzymuje, następnie przywraca domyślne pozycje gracza oraz CPU i znów rusza;
Podsumowując:
klawisz/urządzenie | funkcja |
---|---|
mysz | sterowanie graczem |
F1 - F5 |
zmiana algorytmu potworka (CPU) |
Esc |
wyjście |
Dodatkowo, informacje na temat bieżącej sytuacji, czyli aktualnego kierunku ruchu (gracza i CPU) oraz użytego algorytmu AI (CPU), widoczne są w lewym dolnym rogu (nazwy kierunków ruchu migają); |
To w sumie tyle - nie ma co więcej opisywać, bo to nie jest gra; Kod pisałem ponad pół roku temu, więc nie jest najgorszy; Ale i też nieco się spieszyłem, więc część można poprawić (DRY, gdzieniegdzie hardkodowane liczby itp.);
Grafikę ukradłem (i nieco przerobiłem) z prawdziwej gry Chase, napisanej przez Shiru w ramach tutoriala na temat pisania gier na platformę NES w języku C (link do tutoriala); Oryginalną grę można pobrać i odpalić w dowolnym emulatorze - bardzo dobra robota; Są też źródła, więc można się zorientować, jak ciężko pisało się takie gry;
W załączniku daję pełne źródła programu, razem z plikiem bmanai.exe do uruchomienia; Obok pliku wykonywalnego musi się znajdować katalog graphics, bo w nim znajdują się wszystkie grafiki używane przez tester; Wersja FPC obojętna - program pisany pod wersją 2.6.4, ale na nowszych także się kompiluje;
Kto chce niech korzysta - udostępniam bez licencji, można wykorzystać w dowolnym celu.