This is an old revision of the document!


Chicken Invaders

Introducere

Proiectul are ca scop crearea unei clone a popularului joc din copilărie Chicken Invaders, joc foarte popular în perioada anilor 2000. Jocul presupune distrugerea cu ajutorul unei nave spatiale cu tun a găinilor malefice care vor să distrugă galaxia. Prin intermediul acestui proiect, am încercat să readuc nostalgia iubitorilor de jocuri vechi. Pentru acest joc sunt necesare un strop de concentrare, dar și niște reflexe bune.

Descriere generală

Aplicația este formată din 3 pagini text: de start, cu felicitări pentru învingător și cu păreri de rău pentru pierzător. Toate aceste pagini duc la jocul propriu-zis odată cu apăsarea butonului din mijloc.
Ajunsă în joc, persoana poate să deplaseze naveta spațială folosind butoanele laterale(stânga-dreapta) și să tragă cu arma(mijloc) pentru a elimina toate păsările. Jocul începe cu 3 vieți și acestea se termină atunci când jucătorul a tras cu arma de 3 ori(nu neapărat consecutiv), dar nu a nimerit nicio pasăre. Păsările nu se pot deplasa, deci este necesară poziționarea tunului astfel încât acesta să se afle dedesubtul inamicilor. La fiecare aruncare corecta se aprinde LED-ul albastru, iar la fiecare aruncare greșită, cel roșu. Jocul este însoțit și de niște efecte sonore.

Schema bloc

Hardware Design

Listă de componente Număr de bucăți
Placă Arduino UNO R3 1
Ecran 1.44” SPI ST7735S 1
Breadboard Small 1
Fire tată-tată
Rezistențe 1 kohm 5
LED roșu 1
LED albastru 1
Modul Buzzer 1
Butoane 3

Schema circuit

Software Design

Pentru partea de programare a jocului am folosit mediul de dezvoltare Arduino IDE și două biblioteci compatibile cu ecranul folosit: LCDWIKI_GUI.h și LCDWIKI_SPI.h
Din biblioteca LCDWIKI_SPI.h am folosit un constructor pentru a face legătura între ecran și partea de software.
Funcțiile folosite din biblioteca LCDWIKI_GUI.h sunt următoarele:

  • virtual int16_t Get_Width(void) const – folosită pentru a afla lățimea ecranului(în pixeli)
  • virtual int16_t Get_Height(void) const – folosită pentru a afla lungimea ecranului(în pixeli)
  • void Fill_Screen(uint16_t color) – umple tot ecranul cu o culoare dată
  • void Set_Draw_color(uint16_t color) – setează culoarea utilizată pentru desenarea de obiecte
  • void Set_Text_colour(uint16_t color) - setează culoarea utilizată pentru scriere
  • void Set_Text_Back_colour(uint16_t color) - setează culoarea fundalului folosit pentru evidențierea textului
  • void Set_Text_Back_Size(uint8_t s) - setează dimensiunea textului
  • void Print_String(const uint8_t *st, int16_t x, int16_t y) – afișează un șir constant, coordonatele primului caracter fiind date de ultimii doi parametri
  • void Fill_Circle(int16_t x, int16_t y, int16_t radius) – desenează pe ecran un cerc
  • void Fill_Triangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2) – desenează pe ecran un triunghi
  • void Fill_Round_Rectangle(int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t radius) – desenează pe ecran un dreptunghi ce are colțurile puțin rotunjite

Funcțiile Fill_Circle, Fill_Triangle și Fill_Roung_Rectangle au fost folosite pentru crearea graficii jocului(glonț, pasăre, navă), pe când cele destinate scrierii au servit la programarea paginii de start a jocului și a paginilor afișate în caz de victorie și înfrângere. Descrierea funcțiilor implementate se poate găsi în README, la fel și codul aplicației.

Rezultate Obţinute

Pagină de start + Începutul jocului

Procedeu de eliminare a unei găini

Pagină pentru câștigător/pierzător

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2022/avaduva/chickeninvaders.1654125865.txt.gz · Last modified: 2022/06/02 02:24 by diana.vespan
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0