Programarea Calculatoarelor, seria CC
Tema presupune realizarea a clasicului joc Pac-Man, pe Linux/Windows, folosind biblioteca
Puteți descărca de aici o arhivă ce conține exemplele,
scheletul de cod și un fișier
Pentru a vă familiariza cu cerințele temei, puteți să vă jucați să testați Pac-Man aici.
De asemenea, puteți afla mai multe lucruri interesante despre lunga istorie a jocului pe Wikipedia.
În exemplu1.c și exemplu2 veți găsi un mod de utilizare a acestei biblioteci.
În exemplu1.c se arată cum poate fi folosită biblioteca pentru a afisa șiruri, pentru a muta un caracter afișat pe ecran la apăsarea anumitor taste, sau pentru a se efectua anumite acțiuni.
În exemplu2.c este prezentat un mod în care se poate determina ce tastă a fost apăsată sau dacă nicio tastă nu a fost apăsată.
Pentru mai multe detalii despre
Anul trecut, tema a constat în realizarea unui joc de snake. Puteți descărca de aici executabilele în format ELF (Linux) pentru unele dintre cele mai reușite teme.
Pentru a putea folosi
Pentru a folosi
De exemplu, pe distribuția Ubuntu:
sudo apt-get install libncurses5-dev
Compilarea sursei se va face cu:
gcc pacman.c -lcurses
make
make exemple
Pentru semnalarea apăsării unei taste într-un interval de timp va trebui să includeți și
Dacă preferați să utilizați Code-Blocks, va trebui să adăugați la setările de linker și biblioteca
Settings -> Compiler and Debugger -> Linker settings -> Add -> "curses"
Găsiți aici un screenshot.
Pentru a putea folosi
Dacă întâmpinați probleme în instalarea
Ținând cont că nu vă este impus un aspect anume pentru joc, ci doar anumite feature-uri pe care trebuie să le
aibă veți primi puncte
Creați folosind
Hărțile sunt fișiere text, cu următorul format:
Se garantează că pe poziția (
Fișierul pacman.c poate fi un schelet pentru aplicația voastră și conține definirea a 2 structuri utile în rezolvarea temei, precum și antetele pentru funcțiile ce va trebui să le implementați la punctul 1:
* Deși toată memoria alocată este eliberată automat la ieșirea din program, o astfel de funcție este necesară în caz că programul ar suporta încărcarea unei alte hărți în timpul rulării. Atunci, memoria pentru vechea hartă ar trebui eliberată, deoarece nu mai este folosită în program.
De exemplu, la rularea aplicației, programul ar putea arăta așa:
Pornind de la exemplu1.c, adăugați aplicației de la punctul 1 mișcarea lui
Pac-Man la apăsarea tastelor de mișcare (puteți folosi săgețile sau orice alte taste; va trebui să
precizați în
Dacă Pac-Man se deplasează într-o poziție în care se află un pac-dot sau un power-pellet, acesta va fi "consumat" (va dispărea de pe hartă) și va fi incrementat scorul acumulat astfel:
Precizări:
Pornind de la exemplu2.c, adăugați aplicației de la punctul 2 mișcarea automată a lui Pac-Man: acesta se mișcă încontinuu, cu o anumită viteză (dată de intervalul de timp setat între mișcări), iar la apăsarea unei taste i se schimbă direcția.
Sugestie: Veți avea o variabilă ce memorează direcția pe care se mișcă Pac-Man, iar la apăsarea unei taste de direcție se modifică doar această variabilă. Coordonatele se modifică în ambele cazuri (s-a apăsat sau nu o tastă de direcție), atunci când trece un anumit timp de la ultima mișcare.
Adăugați aplicației de la punctul 3 cel puțin 2 inamici mișcători.
Precizări:
Puteți implementa în plus orice doriți (nu uitați să precizați în
Idei de bonusuri:
Se vor oferi puncte bonus și pentru aspectul estetic al jocului.