Catapult Moonshot – Gierka na Game Off 2020 by itch.io

Postanowiłem w tym roku wziąć udział w Game Off 2020 w serwisie itch.io. Jest to game jam, w którym należy wykonać grę na zadany temat. W tym roku tematem jest: Moonshot.

Znaczenia słowa moonshot:

  • niezwykle ambitny i nowatorski projekt
  • akt wystrzelenia statku kosmicznego na Księżyc
  • uderzona lub rzucona piłka, która pokonuje dużą odległość po wysokiej trajektorii

moonshot thinking

rodzaj myślenia, który ma na celu osiągnięcie czegoś, co powszechnie uważa się za niemożliwe

Gra którą wymyśliłem (z nieocenioną pomocą moich dzieci) polega na wystrzeliwaniu astronauty na księżyc… przy pomocy katapulty 🙂 Zatem mamy tutaj i wystrzelenie na księżyc i coś co powszechnie uważa się za niemożliwe. Grę napisałem w języku Python, wykorzystując bibliotekę PyGame.

Gra jest dość prosta, ukończyłem ją w zaledwie osiem dni od ogłoszenia tematu, pracując nad nią średnio ok 2h dziennie. Na pracę tą składało się:

  • pisanie kodu
  • poszukiwanie obrazków
  • poszukiwanie dźwięków
  • eksperymenty z mechaniką gry

Gra posiada ekran początkowy zawierający:

  • instrukcję
  • możliwość wyboru jednego z czterech poziomów trudności gry
  • elementy graficzne
  • przycisk do opuszczenia gry

Sama gra polega na wciśnięciu klawisza spacji w odpowiednim momencie, tak aby wskaźnik ustawił się po środku, wówczas astronauta trafia w księżyc. Jeśli wskaźnik nie ustawi się pośrodku, astronauta minie księżyc górą lub dołem. Prędkość poruszania się wskaźnika jest zależna od poziomu trudności.

Mimo prostoty gry, napotkałem kilka problemów do rozwiązania w trakcie pracy nad nią:

  • sposób poruszania „łyżki” katapulty
  • poruszanie astronauty wraz z „łyżką”
  • krzywa lotu astronauty
  • dopasowanie grafik

Grywalność testowali moi testerzy w wieku 8 i 3 lata 🙂

Kod gry zamieściłem w repozytorium GitHub: CatapultMoonshot.

Struktura kodu:

  • main.py – zawiera główną pętlę gry, odsługę zdarzeń oraz aktualizacje i rysowanie poszczególnych komponentów
  • src/astronaut.py – kod odpowiedzialny za postać gry – astronautę – wyświetlanie, animacja, sprawdzanie pozycji, fizyka lotu
  • src/catapult.py – katapulta, wyświetlanie, animacja, strzelanie
  • src/catapult_preview.py – wyświetla animację katapulty na ekranie menu
  • src/clouds.py – rysuje i animuje chmury
  • src/event.py – deklaracje stałych, określających numery zdarzeń gry
  • src/ground.py – rysowanie podłoża
  • src/menu.py – ekran menu z klikalnym gui, używa pygame_gui
  • src/menu_button.py – przycisk menu
  • src/moon.py – księżyc, rysowanie, obliczanie dystansu od zadanego punktu
  • src/parameter_bar.py – wskaźnik, rysowanie, animacja, zatrzymywanie, odczytywanie wartości. Używany w grze oraz w menu.
  • src/utils.py – plik dla funkcji pomocniczych. Zawiera funkcję rotate, która służy do obrazania elementów gry o określony kąt wokół zadanego punktu (pivot).
  • setup.py – skrypt do budowania gry do dystrubycji

Dodatkowe pliki i katalogi:

  • images – obrazki
  • sounds – dźwięki
  • fonts – czcionki
  • screenshots – zrzuty ekranu
  • README.md – informacje o grze

W katalogu build znajduje się gra skompilowana dla systemu windows. W systemie linux najprościej odpalić grę poprzez pythona 3, jest to opisane w readme.

Udostępnij
Tags:

Skomentuj