Autor: Rusu Bianca-Ana-Maria 336CA
Proiectul constă într-o adaptare a jocului Tower Stack pe un ecran LCD.
Scopul jocului este de a construi un turn cât mai înalt din piese.
Piesele vin de sus, iar poziția lor poate fi controlată folosind un accelerometru. Piesele încep să cadă după ce jucătorul apasă pe un buton.
Un buzzer va fi folosit pentru a semnala că piesa curentă nu a fost așezată corespunzător pe turn.
Am folosit Arduino IDE și următoarele biblioteci:
Implementarea este bazată pe exemplele din bibliotecile de mai sus și exemplul din Arduino IDE tone digital pentru buzzer. Pentru a folosi butonul ca input am utilizat întrerupere pe PCINT0.
Accelerometrul comunică folosind I2C, însă display-ul folosea pin-ul A4(SDA) pentru LCD_RST. A trebuit să reconfigurez LCD-ul să folosească pin-ul 13 în loc de A4. Pentru a reține blocurile am folosit o structură și mai apoi blocurile construite le-am păstrat într-un vector. Blocurilor li se asociază o culoare random. Am implementat și funcționalitate de scor și de game over.
LCD-ul are un refresh rate destul de mic astfel încât dacă se face clear la ecran la fiecare frame apare un efect de imagine sacadată. De aceea atunci când se mișcă un bloc, practic se colorează cu negru poziția anterioară și apoi se desenează normal la poziția nouă.
Scopul jocului e să se construiască un turn cât mai înalt. Jucătorul are la dispoziție un bloc care apare la o poziție random în partea de sus a scenei și îl poate muta stânga-dreapta cu ajutorul accelerometrului. Pentru a lansa blocul, se apasă butonul. În momentul în care turnul este prea înalt, acesta este deplasat în jos. Jocul se termină în momentul în care jucătorul nu reușește să pună blocul corect deasupra turnului și acesta cade și iese din scenă, moment în care apare un text cu “Game over” și se aude și o melodie de la buzzer. Pentru a se relua jocul se apasă din nou pe buton.
Din punctul meu de vedere a fost un proiect interesant, m-am lovit de câteva dificultăți dar am reușit să le rezolv și am învățat să folosesc un LCD și să lucrez cu Arduino.