Table of Contents

Retro Chicken Invaders

Maria Teodor - 336CB

Introducere

Am dorit sa fac un proiect pe care sa il poata aprecia si persoanele care nu sunt la aceeasi facultate, iar ideea pe care am pastrat-o a fost cea a unui joc de arcada, asemanator cu Chicken Invaders, un joc pe care majoritatea persoanelor din generatia mea l-au jucat cu placere cand erau mai mici. Considerand faptul ca acest joc e inspirat de jocul Space Invaders, proiectul va fi o combinatie dintre cele doua. Acest proiect este util pentru a imi distra prietenii cu inca ceva ce am facut in cadrul acestei facultati.

Descriere generală

In principal, jucatorul se va putea misca stanga-dreapta cu ajutorul unui joystick, avand un buton pe care va apasa pentru a trage in inamici. Vor exista mai multe nivele, cu cate o dificulate diferita. Omorand inamici, jucatorul va castiga puncte, iar la final scorul sau va fi afisat pe ecran, pentru a fi motivat sa se joace mai mult pentru a-si intrece recordul, sau pentru a-si intrece prietenii.

Buzzer-ul va acompania sonor jocul, pentru a oferi o experienta mai placuta jucatorului.

Hardware Design

Componentele folosite vor fi:

  • Arduino NANO
  • Ecran LCD 2004
  • Potentiometru
  • Joystick
  • Buzzer
  • Placa prototipare cablaj
  • Fire

Am incercat sa asamblez proiectul astfel incat sa fie usor de tinut in mana, pentru a duce la o experienta a jucatorului mai placuta. Am lipit componentele de o placa de prototipare cablaj, ascunzand buzzer-ul in spatele ecranului. Mi-am exersat abilitatile de lipit componente deprinse in vara de dupa anul intai, cand, in cadrului unui internship, am parcurs mai multe laboratoare de SMP, fiind nevoita sa lipesc pini pe majoritatea pieselor folosite. Pentru a fixa mai bine joystick-ul, am folosit doua suruburi cu care l-am prins de placa. Cat sa fie un design cat mai portabil, pana la urma am optat pentru a folosi un Arduino NANO.

Software Design

  • Medii de dezvoltare: Arduino IDE
  • Librarii Arduino IDE utilizate pentru: LCD

Spre dezamagirea mea, ecranul pe care l-am folosit este limitat la 8 caractere speciale, deci nu am reusit sa afisez mesaje precum “GAME OVER”, nivelul curent si scorul final decat rotite la 90 de grade fata de orientarea ecranului. De asemenea spre dezamagirea mea, e imposibil sa reproduci un sunet de gaina cu buzzer-ul pe care l-am folosit (cel mai basic, nu stiu daca chiar e imposibil sau doar )

Am structurat nivelele de dificultate in functie de urmatoarele criterii: numarul de gloante pe care le poate trage jucatorul, numarul maxim de inamici ce se pot afla la un moment dat pe ecran, si functia de generare a inamicilor, fiind in total trei astfel de functii. In plus, in urma terminarii nivelului 3, numarul de frame-uri pe secunda creste de la 2 la 3.

Petru a calcula scorul, am folosit o formula ce ia in considerare numarul de inamici omorati, nivelul curent, cat si pozitia jucatorului in momentul mortii. Astfel, jucatorul este motivat sa nu stea doar pe randul cel mai de jos, putand sa castige mult mai multe puncte daca se deplaseaza in pozitii cat mai periculoase.

Functiile de baza pe care-am folosit sunt:

Rezultate Obţinute

In prima poza se poate observa cablajul din spatele proectului, remarcandu-se prezenta unui buzzer in spatele ecranului (nu am mintit).

In a doua poza se poate vedea ca e la fel de frumos si in fata.

Recomand sa incercati sa jucati jocul, prin expertiza programatorului am avut un scor maxim de 4037 si vreo ora facand asta si enervandu-mi prietenii cu care eram in camera.

Concluzii

Folosind notiunile invatate la PM, mai exact cele privind PWM, intreruperi hardware si ADC, am reusit sa intocmesc un joc ce imi va surprinde prietenii si parintii care se vor gandi “asta nu e la fel de amuzant ca jocul cu masinute pe care l-a facut in semestrul 1”. Nu este cel mai inventiv proiect intalnit, insa se descurca okay la ceea ce ar trebui sa faca.

Jurnal

Demo

Download

retro-chicken-invaders.zip

Bibliografie/Resurse

Export to PDF