Scopul temei este de a crea un joc clasic de “8 Ball Pool” cu 2 jucatori, care foloseste 7 bile rosii, 7 bile galbene, o bila neagra si o bila alba. Exemplu:https://www.youtube.com/watch?v=6uzf1nXZW6E
1. Spargerea bilelor
La inceputul jocului, bilele sunt aranjate ca in poza urmatoare:
Vor fi aranjate intr-un triunghi format din cele 15 bile in a treia treime a mesei, iar bila alba este situata in prima treime a mesei.
R R G G N R G R R G R R G G R
R - bila rosie G - bila galbena N - bila neagra
Jucatorul care incepe va putea deplasa bila alba in prima treime a mesei. Dupa ce a mutat bila unde doreste cu tastele “WASD”, apasa pe “SPACE”.
View-ul pe care il va avea dupa apasarea tastei “SPACE” este urmatorul:
La inceput, tacul este foarte aproape de bila alba. Tacul va avea o animatie de retragere (pe directia tacului) atunci cand se apasa “Left Mouse Button”. Aceasta animatie va fi facuta in vertex shader. Dupa ce tacul a ajuns la o distanta anume de bila alba, acesta revine aproape de bila alba si animatia se reia. Intensitatea loviturii va fi direct proportionala cu distanta intre tac si bila alba. Cand dam drumul butonului din stanga al mouse-ului, se executa lovitura. De asemenea, cu “Right Mouse Button” se poate misca tacul in jurul bilei albe, camera urmarind bila alba si tacul ca in modul third person. Directia loviturii este data de directia tacului. Dupa lovitura, bila alba va avea o anumita viteza cu directia tacului si magnitudinea proportionala cu distanta dintre tac la bila alba in momentul release-ului butonului stang al mouse-ului. In momentul ciocnirii bilei albe cu celelalte bile, acestea vor trebui sa se comporte ca in viata reala. Deplasarea bilei albe este in planul XOZ.
2. Alegerea culorii fiecarui jucator
Culoarea cu care joaca un player este aleasa in momentul in care jucatorul introduce in buzunar prima bila de culoare galbena sau rosie. Dupa aceea, jucatorul respectiv trebuie sa introduca toate bilele de culoarea respectiva in buzunar, iar celalalt jucator trebuie sa introduca bilele de cealalta culoare.
3. Jocul pana la bila neagra
Jucatorii trebuie sa-si introduca in buzunar toate bilele. O bila este introdusa in buzunar in momentul cand se apropie atat de mult de un buzunar incat putem trage aceasta concluzie. Dupa aceea, ei pot introduce bila neagra. Cine introduce primul bila neagra este castigator. Daca este comis un fault, celalalt jucator poate plasa bila alba oriunde pe masa cu tastele WASD (atata timp cat nu intersecteaza alte bile). Fault-ul este de doua feluri: daca un jucator, la o lovitura, nu isi atinge prima data propriile bile sau daca bila alba intra in buzunar. Dupa ce a plasat bila alba pe masa cu un view top-down, apasa pe SPACE pentru a reveni la camera third person si jocul continua.
pentru a putea fi vizualizata lovitura:
Orice aduce realism jocului:
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 Tema2, cu fisierele Tema2.cpp si Tema2.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 Tema2, 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/Tema2/Tema2.h>
5 decembrie 2018, ora 23:55