Autorul poate fi contactat la adresa: Login pentru adresa
Acest proiect va consta in crearea unei versiuni a clasicului joc de “Space Invaders”.
Jocul va fi single player.
Regulile jocului sunt urmatoarele:
Jucatorul are la dispozitie 4 butoane:
Pe display se va afisa un mesaj de genul “Press any key to start the game”.
La apasarea oricarui buton jocul va incepe si jucatorul va putea interactiona cu jocul prin folosirea celor 3 butoane.
Piese | Pret per unitate | Numar | Sursa |
---|---|---|---|
LED 3 mm VERDE 2 mA | 0.25 RON | 5 + 2 | http://conexelectronic.ro/produs.php?id=38986 |
PLACA TEST 200×100 | 13.00 RON | 1 | http://conexelectronic.ro/produs.php?id=60943 |
Dioda 1N4148 | 0.05 RON | 2+2 | http://conexelectronic.ro/produs.php?id=43130 |
Condensator 10 microF/25 V 4×7 mm | 0.20 RON | 1 + 1 | http://conexelectronic.ro/produs.php?id=40423 |
Rezistor 470/0.25 W 1% | 0.05 RON | 5 + 2 | http://conexelectronic.ro/produs.php?id=10209 |
Rezistor 10 K/0.25 W 1% | 0.05 RON | 5 + 2 | http://conexelectronic.ro/produs.php?id=9908 |
Rezistor 3.3 K/0.25 W 1% | 0.05 RON | 5 + 2 | http://conexelectronic.ro/produs.php?id=10048 |
Rezistor 1.8 K/0.25 W 1% | 0.05 RON | 5 + 2 | http://conexelectronic.ro/produs.php?id=10098 |
PUSH BUTON 4.3 mm | 0.50 RON | 5 + 2 | http://conexelectronic.ro/produs.php?id=38492 |
Display NOKIA 3310 | 10 - 15 RON | 1 (hopefully) | TBD |
In dezvoltarea proiectului am folosit:
Am pornit de la libraria mentionata mai sus si am adaugat functionalitati pentru reprezentarea unui singur pixel pe ecran.(Libraria permite doar reprezentarea de text). Aceasta s-a realizat prin folosirea unu buffer intermediar de dimensiunea ecranului in care scriam pixel cu pixel si cu care suprascriam ecranul la fiecare apel al unei functii update.
Se retin coordonatele centrului de greutate al “blocului” de inamici si un vector de 27 de elemente specificand tipul unui inamic(1 sau 2) si starea sa(0 = mort, nenul = viu). Pentru coliziuni sau alte aplicatii pozitia fiecarui inamic poate fi determinata pornind de la coordonatele blocului si de la pozitia sa in vectorul de 27 de inamici.
Codul sursa este atasat la sectiunea download.
Jocul este functional. Prezinta 27 de inamici mobili care pot fi rapusi unul cate unul folosind un proiectil. Inamicii sunt mobili, de 2 tipuri diferite, iar coliziunile sunt facute destul de realist. Prin intermediul LED-urilor se contorizeaza numarul de inamici rapusi(cate un LED la fiecare 10) si se efectueaza mici jocuri de lumini in perioadele de dinaintea jocului sau la terminarea acestuia.
Proiectul a fost pe parcursul semestrului o sursa de stres, chiar daca feedback-ul si ajutorul primit la laborator a fost de nota 10 :). Acum, avand in fata un proiect functional, dragut si facut cu mana mea chiar simt ca a meritat. A fost obositor pana ce am reusit sa afisez un 'Hello World' pe ecran, dupa proiectul a fost o placere.
De aici se poate downloada codul sursa aferent proiectului. Detalii cu privire la pinii folositi gasiti in modulul main.c.
Aici gasiti o prezentare sumara a etapelor de realizare a placutei.
Dupa vreo 2 zile de lipit si una de debugg-uit am obtinut o placuta de baza functionala. E un inceput :)
In aceasta saptamana nu am lipit nimic. Am realizat schema electrica avand in vedere functionalitatile pe care urma sa le ofere placuta mea. Atat schema cat si lista de componente se gasesc mai sus.
Incet dar sigur m-am ocupat de lipirea componentelor suplimentare pe placuta de test. Procesul a durat destul de mult datorita lipsei mele de experienta precum si a unor mici impedimente(am lipit facut divizorul de tensiune invers si scotea 1.8, am pur rezistente de valori prea mari pentru butoane, etc.). La final am lasat lipirea LCD-ului, aceasta fiind cea mai migaloasa dintre sarcinile pentru aceste 2 saptamani.
Dezvoltand peste libraria mentionata mai sus la referinte am implemetat un mic sistem de afisare a unui singur pixel pe LCD(in mod normal faci afisaj la nivel de bytes, deci automat 8 pixeli). Apoi am creat 2 tipuri de inamici, o naveta si un proiectil reprezentandu-le sub forma unor vectori de char-uri. Au urmat, desigur, coliziunile, miscarea inamicilor si conditia de victorie. Rezultatul il puteti gasi aici: