Skip to content

Latest commit

 

History

125 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WEITI Game


Project z PROI 24L
Made by: Matvii Ivashchenko, Katsyaryna Anikevich
Opiekun: Pan Szymański Zbigniew


1. Idea projektu

Stworzyliśmy 4 poziomy gry oparte na temacie „studiowanie w WEITI”.
Każdy poziom symbolizuje określoną część studiowania na uniwersytecie

2. Struktura projektu

  • main.cpp
    Główny plik Main zarządza scenami. W funkcji main znajduje się pętla monitorująca currentScreen, w przypadku jego zmiany funkcja uruchamia żądaną scenę.

  • Tools

    • Implementacja rysowania okna dialogowego w celu wyjaśnienia idei poziomu i kontrolowania gracza na poziomie, implementacja uruchomionego tekstu z dźwiękiem, rysowanie nauczycieli
    • Wykorzystywana jest klasa Window, która posiada parametr currentScreen typu zmiennego, który może przyjmować wartości (Menu, LEVEL1, LOSS, VICTORY, EXAM, MAZE, CATH, MAIN), z których każda odpowiada za scenę/ poziom, który ma zostać uruchomiony. Posiada metody setScreen, getScreen.
  • Scenes
    Realizacja ekranów WIN/LOSS, głównego ekranu oraz ekranu menu

  • src
    Tutaj znajdują się wszystkie testury i dźwięki.

  • Tests
    Tutaj znajdują się testy jednostkowe dla plików z folderu levels.

  • levels

3. Levels

BEFORE LEVELS

Opis:

Pojawienie się nauczycieli miało na celu wyjaśnienie idei i zarządzanie poziomem

Realizacja:

Stworzyliśmy funkcję do rysowania okna dialogowego (DrawRoundedRectangle), drawTeachers, która przyjmuje argument isInRightHalf, dzięki czemu możliwe jest zaimplementowanie zaciemnienia milczącego uczestnika narracji. Dzięki DrawDialogWindow tekst pojawia się stopniowo wraz z dźwiękiem. HandleDialogWindow to funkcja, która wywołuje wszystkie powyższe funkcje

BEFORE LEVELS

1. HEADING TO WEITI

Opis:

Pierwszy poziom symbolizuje drogę na uniwersytet. Na nim gracz stale biega, może skakać i przemieszczać się pomiędzy poziomami wysokości. To wszystko, czego potrzebujesz, aby pokonać przeszkody. Istnieją dwa rodzaje przeszkód: komputery i serwery. Komputery można po prostu przeskakiwać, ale nie serwery, aby jego przejść należy zmienić poziom wysokości. Kolizja z przeszkodą powoduje porażkę.

Realizacja:

Gracz i przeszkody zaimplementowano przy użyciu tekstury oraz klasy Rectangle z biblioteki Raylib, która służy do śledzenia kolizji. Przeszkody pojawiają się w prawej niewidocznej części ekranu, w różnych współrzędnych losowo generowanych przez algorytm. Algorytm sprawdza, czy odległość między nową przeszkodą a poprzednią wynosi co najmniej 200 pikseli, aby poziom mógł zostać pokonany. Jeżeli ten warunek nie zostanie spełniony, algorytm przesunie nową przeszkodę o 200 pikseli w prawo.Gdy przeszkoda dotrze do lewego końca ekranu, algorytm zgeneruje jej współrzędne ponowmie.

HEADING TO WEITI

2. FIRST DAY

Opis:

Trzeci poziom symbolizuje pierwszy dzień na uniwersytecie, podczas którego trzeba znaleźć odpowiednią salę. Gracz porusza się po losowo wygenerowanym labiryncie i musi zebrać 5 hot dogów rozmieszczonych w różnych miejscach. Pozycje hot dogów są generowane losowo, z zachowaniem zasady, aby nie pojawiały się w tym samym miejscu. Gracz zaczyna w lewym dolnym rogu i jego celem jest dotarcie do prawego górnego rogu labiryntu.

Realizacja:

Labirynt jest generowany przy użyciu algorytmu tworzenia labiryntów, który usuwa ściany z początkowo pełnej struktury, aby stworzyć przejścia. Pozycja gracza i hot dogów jest zapisana jako współrzędne prostokątów, a ruch gracza oraz sprawdzanie kolizji z hot dogami jest obsługiwane za pomocą klasy Rectangle z biblioteki Raylib. Gra kończy się sukcesem po zebraniu wszystkich hot dogów i dotarciu do wyjścia.

FIRST DAY

3. PREPARATION

Opis:

Czwarty poziom symbolizuje przygotowanie do egzaminów. Na tym poziomie gracz musi łapać książki i mózgi, aby zdobyć punkty, jednocześnie unikając łapania mediów społecznościowych oraz czatu GPT. Książki dodają 1 punkt, mózgi 3 punkty, a każde z tych przedmiotów upuszczone na podłogę odejmuje 1 punkt. Złapanie mediów społecznościowych również odejmuje 1 punkt, a złapanie czatu GPT kończy grę. Gra kończy się wygraną po zdobyciu 20 punktów.

Realizacja:

Obiekty są generowane losowo na ekranie i opadają w dół. Gracz porusza się w lewo i prawo, łapiąc przedmioty. Książki i media społecznościowe pojawiają się ponownie po upadku na podłogę, podczas gdy mózgi pojawiają się co 15 sekund, a czat GPT co każde 5 zebranych przedmiotów. Pozycje gracza i obiektów są zapisywane jako współrzędne prostokątów, a kolizje są śledzone przy użyciu funkcji CheckCollisionRecs z biblioteki Raylib. Wynik gracza jest wyświetlany na ekranie.

PREPARATION

4. EXAM

Opis:

Ten poziom reprezentuje sesję egzaminacyjną, musisz poruszać się po ekranie i rzucać ołówkami we wrogów (egzaminami) i nie pozwolić, aby cię dopadli. Jeśli się do ciebie zbliżą, zaatakują. Charakterystyka:
Gracz:

  • Zdrowie - 100
  • Szkoda - 25

Egzamin:

  • Zdrowie - 25
  • Szkoda - 25

Realizacja:

Wrogowie są implementowani poprzez klasę Enemy, która dziedziczy po klasie Rectangle. Klasa Enemy posiada następujące argumenty: Health, Damage oraz Texture( numer użytej tekstury (która jest generowana losowo)). Metody - oprócz getterów, funkcja ReceiveDamage od kuli, moveToPlayer - zmienia położenie. wroga o jeden piksel w X i/lub Y, do gracza. Gracz i kuli są implementowane poprzez klasę Rectangle i mają swoje cechy w zmiennych. Textury są dołączone przez współrzędne Rectangle.

EXAM

4. Uruchomienie projektu

Biblioteka raylib musi być zainstalowana, aby projekt działał

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages