Przykładowe kolokwium - niestacjonarne

Przykładowe kolokwium - niestacjonarne

Zasady kolokwium

Przebieg

Ocenianie

Kontakt z prowadzącym

W trakcie kolokwium prowadzący dostępny będzie na platformie Zoom, pod tym samym linkiem, pod którym odbywają się standardowe zajęcia. W przypadku wystąpienia problemów technicznych z portalem eKursy lub ewentualnych błędów w treści zadań macie Państwo możliwość natychmiastowego zgłoszenia takiej sytuacji. Logując się proszę użyć pełnego imienia i nazwiska. Prowadzący nie będzie udzielał pomocy w rozwiązaniu kolokwium.

Treść zadania

Do zadania dołączono zestaw tekstur do wykorzystania. Rozpakuj je i umieść folder tekstury w folderze uruchamiania programu (w przypadku Qt Creator będzie to build folder projektu), korzystaj tylko z ścieżek względnych.

Stwórz trzy klasy: Bohater, Potwor oraz Bagno, dziedziczące po wspólnej klasie AnimowaneAssety, reprezentującej oteksturowany obiekt. Zastanów się czy klasa bazowa AnimowaneAssety nie powinna być klasą pochodną klasy, która już implementuje oczekiwane funkcjonalności. Korzystając z SFML zaimplementuj następującą funkcjonalność:

  1. Dodaj tekstury do stworzonych klas, skorzystaj z dostarczonych tekstur.
  2. Umieść w lewym dolnym narożniku ekranu obiekt klasy Bohater.
  3. Umieść na scenie 5 potworów oraz 10 bagien w losowych miejscach (poza lewym dolnym narożnikiem ekranu, wylosuj takie wartości, aby obiekty nie wystawały poza krawędź ekranu), przechowuj wskaźniki do nich w jednej wybranej kolekcji.
  4. Dodaj do klasy AnimowaneAssety pola opisujące prędkością pionową i poziomą:
    • ustaw obie prędkości bohatera na wybrane przez siebie wartości,
    • przy tworzeniu obiektu Potwor nadaj mu losową prędkość pionową z zakresu <-200, 200>,
    • przy tworzeniu obiektu Bagno nadaj mu losową prędkość poziomą z zakresu <-50, 50>,
  5. Dodaj do klasy AnimowaneAssety metodę CiaglaAnimacja, implementującą animację obiektu z zapisaną w obiekcie prędkością:
    • wywołuj metodę CiaglaAnimacja dla obiektów klas Potwor i Bagno.
  6. Rozszerz metodę CiaglaAnimacja o wykrywanie kolizji z krawędziami ekranu, w przypadku dotknięcia krawędzi, obiekt przenosi się na w pobliże przeciwnego krańca ekranu.
  7. Dodaj do klasy Bohater metodę UstawCel ustawiającą punkt docelowy, do którego ma dotrzeć bohater, zapisz punkt docelowy wewnątrz obiektu Bohater.
  8. Dodaj obsługę myszki, kliknięcie punktu ustawia docelowy punkt do którego dąży bohater.
  9. Dodaj do klasy Bohater metodę PodazajDoCelu, implementującą animację przemieszczania się bohatera do zadanego punktu z zapisaną w obiekcie prędkością. Bohater porusza się tak długo, aż nie osiągnie celu (bohater nie musi poruszać się po najkrótszej drodze).
  10. Dodaj obsługę klawiatury - wciśnięcie b przesuwa bohatera z powrotem do obszaru startowego (lewy dolny narożnik).
  11. Dodaj w klasie Bohater obsługę żyć (początkowa wartość 3).
  12. Dodaj wykrywanie kolizji bohatera z pozostałymi obiektami na scenie:
    • usuwaj obiekt, z którym wystąpiła kolizja,
    • odejmij bohaterowi jedno życie.
  13. Przerwij grę, jeśli bohater straci wszystkie życia.

Autorzy: Tomasz Mańkowski, Michał Fularz, Jakub Tomczyński