Tema 2

Joc de biliard

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

Stadii

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”.

Jucatorul va fi constrans in a muta bila alba doar in prima treime a mesei

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.

Alte specificatii

  • Dupa lovitura, camera se schimba din third person pe bila alba pe una top-down,

pentru a putea fi vizualizata lovitura:

  • Pentru punctaj complet, jocul trebuie sa fie consecvent.
  • Animatia tacului pentru lovirea bilei albe se va face in vertex shader.

Punctaj

  • 10% - Afisare la stdout statistici joc (cate bile a bagat fiecare, cate fault-uri s-au comis etc)
  • 10% - Implementarea coliziunilor (bila-bila, bila-manta) (link-ul acesta ar fi de folos)
  • 10% - Dispartia unei bile bagata in buzunar
  • 15% - Animatie tac in vertex shader in momentul loviturii
  • 15% - Camera third person pe directia tacului, target-ul fiind bila alba
  • 15% - Vedere top-down dupa ce tacul a lovit bila ptr a se putea vizualiza lovitura
  • 25% - Desenarea mesei cu buzunare si a bilelor, ca in poze

Bonus

Orice aduce realism jocului:

  • Posibilitatea imprimarii unui efect lateral, in sus, in jos sau o combinatie intre ele (aici si aici)
  • Masa realista
  • Linii pentru ghidare
  • etc

Intrebari si raspunsuri

Pentru intrebari vom folosi forumurile de pe moodle.

Notare

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).

Indicatii suplimentare

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>

Arhivarea proiectului

  • in mod normal arhiva trebuie sa contina toate resursele necesare compilarii si rularii
  • inainte de a face arhiva asigurati-va ca ati dat clean la proiect
    • click dreapta pe proiect in Solution ExplorerClean Solution, sau
    • stergeti folderul /Visual Studio/obj
  • stergeti fisierul /Visual Studio/Framework_EGC.sdf (in caz ca exista)
  • stergeti fisierul /Visual Studio/Framework_EGC.VC.db (in caz ca exista)
  • stergeti folderul /x64 sau /x86 (in caz ca exista)
    • executabilul final este generat in folderul /x86 sau /x64 la finalul link-editarii in functie de arhitectura aleasa la compilare (32/64 biti)
  • in cazul in care arhiva tot depaseste limita de 20MB (nu ar trebui), puteti sa stergeti si folderul /libs sau /Resources intrucat se pot adauga la testare. Nu este recomandat sa faceti acest lucru intrucat ingreuneaza mult testarea in cazul in care versiunea curenta a librariilor/resurselor difera de versiunea utilizata la momentul scrierii temei.

Deadline tema

5 decembrie 2018, ora 23:55

egc/teme/2018/02.txt · Last modified: 2018/12/04 17:42 by paul.gheorghe2411
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0