Autorul poate fi contactat la adresa: Login pentru adresa
Mi-am propus sa implementez o varianta personala a jocului Space Invaders - with a little twist. Jucatorul va fi nevoit in acest caz sa lupte impotriva unui alt tip de invadatori: periculosii propovaduitori ai veganismului.
Scopul proiectului este punerea la incercare a notiunilor acumulate (sper eu) pana acum si amuzamentul celor care vor testa “produsul” final.
Jucatorul are la dispozitie o naveta pe care o poate manipula prin intermediul unor butoane: doua pentru deplasarea stanga-dreapta si unul pentru atac. Pe parcursul a mai multor nivele cu diverse grade de dificultate, el trebuie sa inlature toti inamicii pe care ii intalneste in calea sa, ferindu-se in acelasi timp de atacurile lor. Pentru a salva omenirea de curentul hipster care o ameninta, el are la dispozitie trei vieti. La anumite momente ale jocului el poate intra in posesia unor power-ups care sa ii imbunatateasca atacul.
Jocul va fi controlat prin intermedidul unor butoane si afisat pe un LCD. Optional, voi adauga un buzzer pentru redarea unei melodii de fundal.
Schema:
Lista de componente:
Joculetul a fost implementat pe Linux iar ca mediu de dezvoltare am folosit Atom, vim, avr-gcc si bootloadHID.
Detalii legate de joc:
- scopul este doborarea tuturor inamicilor si ferirea de atacurile lor;
- inamicii sunt navete spatiale in forma de banane si mere care ataca folosind proiectile in forma de frunze de spanac;
- jucatorul este reprezentat printr-o naveta clasica;
- acesta are posibilitatea sa se miste stanga-dreapta sau sa atace;
- la momentul de fata poate lansa un singur atac la un moment;
- este implementat pe 3 nivele de dificultate:
- la inceput se afiseaza un meniu din care se poate selecta dificultatea dorita;
- la finalul unui nivel, in cazul in care jucatorul iese invingator se afiseaza un meniu in care i se permite sa continue la urmatorul nivel sau sa se intoarca la meniul principal;
- in caz ca a pierdut, i se da posibilitatea de a reincerca nivelul curent.
M-am distrat mult mai mult facand acest joc decat ma asteptam. Imi pare rau ca nu am reusit sa il aduc la timp la forma pe care mi-as fi dorit-o eu (inca exista cateva mici bug-uri si nu am reusit sa termin partea de power-ups).
Ce am invatat:
- e bine sa nu stai la inceput pe lucruri de finete pentru ca s-ar putea sa ai niste surprize neplacute (am investit destul de mult timp in realizarea unor iconite simpatice si la sfarsit nu le-am putut folosi pe toate din cauza lipsei de memorie);
- ar fi fost bine daca as fi pus memorie suplimentara, deoarece asa poate rezolvam problema de mai sus sau as fi putut pune o melodie de fundal;
- cateodata componentele vin cu bug-uri/feature-uri la care nu te astepti (nu am reusit sa folosesc toata lungimea LCD-ului in modul portrait).
20 Aprilie - Hello, World!
27 Aprilie - Am inceput lipirea componentelor si am constatat ca multe ne lipsesc.
3 Mai - Marea lipeala continua; cumparatul de componente la fel.
5 Mai - Am realizat schema de bloc pentru milestone-ul 2.
10 Mai - Placa de baza e gata. Mama, mama, mi-au venit si LCD-ul si restul jucariilor.
17 Mai - Entuziasmata si plina de entuziasm vin la laborator ca sa lipesc restul pieselor. Aflu ca mai am nevoie de inca ceva ca sa nu prajesc LCD-ul ⇒ abort mission.
18 Mai - Intr-un tur de forta majora, stau pe parcursul a doua laboratoare sa termin de lipit tot. LCD-ul si Buzzer-ul merg si sper sa fi lipit bine si butoanele pentru ca nu a mai fost timp sa le testez.
22 Mai - Ma apuc sa scriu partea de software. Reusesc sa implementez un meniu minimal, design-ul caracterelor si hotarasc flow-ul jocului.
23 Mai - Inca mai am de lucru la logica joculetului. Voi updata maine acea sectiune cand termin.
24 Mai - Descopar cu mare tristete ca m-am entuziasmat prea tare cand mi-am facut iconita Broccoli-Boss si nu o pot folosi din cauza ca ocupa multa memorie.
25 Mai - Am terminat de updatat pagina de Wiki si imi fac curaj sa merg la PM Fair sa prezint.
Resurse:
- cod laboratoare;
- biblioteca LCD (https://community.atmel.com/projects/ili9341-library-drive-22-tft-displayderived-adafruit-tft-library-ili9340-type-controller);
- proiecte asemanatoare din anii trecuti pentru inspiratie (http://cs.curs.pub.ro/wiki/pm/prj2016/ddragomir/igorparvan, http://cs.curs.pub.ro/wiki/pm/prj2016/csoare/spaceinvaders).
* Documentația în format PDF