Proiectul este o implementare a sistemului de lupte folosit in jocurile Pokémon: acelasi sistem cu care s-au lansat jocurile primei generatii de pe Gameboy din 1996 si care este folosit in continuare in cele mai recente jocuri de pe Nintendo 3DS.
Scopul jocului este de a captura Pokémoni folosind Poké Mingii. Jucatorul incepe cu un singur Pokémon pe care si-l poate alege. Cu ajutorul acestui companion de incredere va putea captura alti Pokémoni.
Utilitatea proiectului este de amuzament. Cu siguranta toti avem amintiri placute despre fenomenul numit Pokémon, fie ca sunt legate de jocurile originale, de anime sau de mai recenta senzatie Pokémon Go. Am ales acest proiect datorita nostalgiei pentru jocurile Pokémon pe care le-am jucat cand eram mai mic pe un emulator de Game Boy Advance.
Jucatorul va folosi 3 butoane: 1 pentru selectia unei actiuni din cadrul meniului, 1 pentru confirmarea deciziei si 1 pentru intoarcerea in meniul anterior. Meniul de actiuni va putea fi vizualizat prin intermediul LCD-ului. Voi folosi un buzzer pentru redarea unui sunet specific pentru actiune ce tocmai a avut loc, si, nu in ultimul rand, unei melodii ce va putea fi ascultata la finalul jocului.
Lista de piese:
Am incercat sa urmez in detaliu formatul luptelor originale Pokemon.
Jocul incepe prin alegerea unui Pokemon dintre Pikachu, Bulbasaur, Squirtle sau Charmander. Scopul jocului este de a prinde alti 5 Pokemoni pentru ca jucatorul sa fie pregatit sa participe in Liga Pokemon!
Sistemul de combat este cel din jocurile originale: lupta are loc pe ture, jucatorul poate decide sa isi foloseasca Pokemonul ca sa lupte, alegand una din cele 4 abilitati pe care acesta le are, sau poate decide sa foloseasca un obiect din rucsac. Rucsacul contine un numar limitat obiecte: 10 Poke Mingii, ce pot fi folosite pentru a prinde Pokemonii salbatici si 3 Potiuni, ce pot fi folosite pentru a vindeca Pokemonul jucatorului. Fiecare abilitate a unui Pokemon are un numar fixat PP(Power Points), care indica de cate ori poate fi folosita.
Rezultatul obtinut este un joc care testeaza strategia jucatorului. Poate fi de asemenea competitiv: doi jucatori pot juca alternativ pentru a vedea cine poate castiga mai repede (asta daca reusesc!) si cu mai multe resurse.
Fiind de mici dimnesiuni aplicatia este foarte usor portabila. Astfel, oricine se poate juca oriunde. Este necesara doar o sursa de curenta la care sa fie conectat cablul USB :D.
Conectarea pieselor pe placuta a fost o experienta noua si destul de dificila la inceput, si nu lipsita de peripetii(am reusit sa stric anumite piese si a trebuit sa dau o fuga pana pe Maica Domnului sa fac reaprovizionarea). Din fericire, dupa ceva timp(destul de mult) m-am obisnuit si nu au mai avut loc alte incidente.
Am renuntat la ideea folosirii a 4 butoane pentru selectie. Doream initial sa folosesc 4 butoane pentru selectia unei actiuni: 2 pentru miscarea stanga/dreapta si 2 pentru miscarea sus/jos. Mi-am dat seama repede ca nu este o idee prea realizabila, deoarece pe ecran nu ar fi incaput textul a doua actiuni pe acelasi rand la o dimensiune cu care sa poata fi citite cu usurinta. Din acest motiv am ales sa folosesc un singur buton pentru selectarea actiunii, cu care sa parcurg optiunile posibile.
Realizarea soft-ului pentru proiect a fost cea mai placuta parte. Singura parte rea a fost ca nu stiam exact cata memorie aveam disponibila pe placuta si am folosit-o in mare parte in realizarea interfetei jocului.
Ce regret cu adevarat este ca nu am reusit sa gasesc notele folosite in vreun Theme Song din jocurile Pokemon. Tot ce am gasit a fost sub forma de portativ si nu am avut cunostintele/timpul pentru a le transpune in cod. Am inlocuit, insa, cu celebrul Imperial March din Star Wars!
Star Wars Imperial March: https://gist.github.com/nicksort/4736535
Biblioteci folosite pentru afisarea pe LCD: https://community.atmel.com/projects/ili9341-library-drive-22-tft-displayderived-adafruit-tft-library-ili9340-type-controller
Functia PLAYNOTE folosita pentru redarea unei note: https://www.petervis.com/C/pizo%20speaker/pizo%20speaker.html
Laboratoarele de PM: http://cs.curs.pub.ro/wiki/pm/lab/lab0