Scopul temei este realizarea unui joc 2D in care utilizatorul controleaza o platforma. Platforma ghideaza o bila care loveste caramizi.
Scena contine urmatoarele obiecte:
Scopul jocului este distrugerea tuturor caramizilor din scena.
Platforma este controlata de jucator prin deplasarea mouse-ului. La mouse click, bila este trimisa in scena. Bila se misca incontinuu pe directia data de platforma sau prin reflexie, la coliziunea cu peretii si caramizile. Daca bila ajunge in partea de jos a scenei si nu este salvata de platforma, jucatorul pierde o vata (iar numarul de obiecte de pe ecran reprezentand vietile se micsoreaza).
La lansarea bilei in scena, ea este trimisa de-a lungul directiei verticale. La coliziunea cu platforma, i se schimba directia. Daca bila loveste platforma in mijloc, directia de reflexie va fi verticala. Daca bila loveste platforma in partea stanga, atunci directia de reflexie pentru bila va fi inspre stanga platformei. Analog in partea dreapta. In figura de mai jos este explicata reflexia pe platforma pentru bila. Puteti sa va imaginati ca platforma reprezinta axa cosinusului de pe cercul trigonometric iar pozitia unde bila loveste platforma, chiar valoarea cosinusului. Daca bila cade pe mijlocul platformei, atunci cosinus = 0. Daca bila cade in partea dreapta a platformei, cosinus este intre 1 si 0. Daca bila cade in partea stanga a platformei, cosinus este intre 0 si -1. Bila se reflecta dupa un unghi egal cu arccosinus.
La coliziune cu celelalte elemente din scena (pereti, caramizi), bila se reflecta natural (de exemplu, la coliziune cu un perete vertical, daca x si y cresteau pana in momentul coliziunii cu pasii tx, respectiv ty, dupa coliziune y creste in continuare cu pasul ty, dar x incepe sa scada cu pasul tx).
La coliziune cu bila, caramizile dispar treptat (li se aplica o scalare pentru micsorare timp de 1-2 secunde).
La coliziune cu unele caramizi, apar in scena powerups (patrate) care se rotesc in timp ce cad pe verticala. Daca aceste powerups sunt atinse de platforma, atunci sunt activate anumite bonusuri pentru jucator pentru o anumita perioada de timp (30 secunde - 1 minut). Exemple de powerups:
Barem orientativ pentru realizarea functionalitatilor (din 100 puncte):
Pentru bonusuri se accepta orice aduce realism scenei sau creste imersiunea jocului. Exemple de bonusuri:
Aici aveti un demo (implementat in framework-ul de laborator) pentru tema, care va va ajuta in intelegerea enuntului temei.
Pentru intrebari vom folosi forumurile de pe moodle.
Baremul este orientativ. Fiecare asistent are o anumita libertate in evaluarea temelor (de exemplu, sa dea punctaj partial pentru implementarea incompleta a unei functionalitati sau sa scada pentru hard coding). Acelasi lucru este valabil atat pentru functionalitatile obligatorii, cat si pentru bonusuri.
Tema trebuie incarcata pe moodle. Pentru a fi punctata, tema trebuie prezentata la laborator. Vor exista laboratoare speciale de prezentare a temelor (care vor fi anuntate).
Tema va fi implementata in OpenGL si C++. Este indicat sa folositi framework-ul si Visual Studio.
Pentru implementarea temei, in folderul Source/Laboratoare/ puteti crea un nou folder, de exemplu Tema1, cu fisierele Tema1.cpp si Tema1.h (pentru implementare POO, este indicat sa aveti si alte fisiere). Pentru a vedea fisierele nou create in Visual Studio in Solution Explorer, apasati click dreapta pe filtrul Laboratoare si selectati Add→New Filter. Dupa ce creati un nou filtru, de exemplu Tema1, dati click dreapta si selectati Add→Existing Item. Astfel adaugati toate fisierele din folderul nou creat. In fisierul LabList.h trebuie adaugata si calea catre header-ul temei. De exemplu: #include <Laboratoare/Tema1/Tema1.h>
4 noiembrie ora 23:55