Igor PARVAN (25204) - Chicken Invaders

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul reprezinta o replica proprie a renumitului joc „Chicken Invaders”. Scopul jocului este sa omori toate gainile. Deplasarea obiectului manipulat de jucator se va face prin apasarea butoanelor stanga-dreapta, precum si tragerea (butonul 3). Am ales acest joc, deoarece l-am jucat de foarte multe ori in copilarie. Consider ca realizarea acestui proiect va starni emotiile din copilarie ale colegilor mei si eu imi voi pune in practica cunostintele acumulate pana in acest moment.

Descriere generală

Controlul navetei spatiale se realizeaza din butoane(stanga, dreapta si tragerea). Jocul va fi proiectat pe un LCD color.

Hardware Design

Lista de piese:

Nume componente Cantitate Pret(RON)
Shield LCD 2.2” 1 50
Placa de test 1 7
Fire mama-mama 40 14
Butoane 3 9
Regulator tensiune 1 2
Condensator electric 10uF 16V 1 0.75
Placa de baza 1 8
Piese de baza X 30

Componentele au fost cumparate de pe site-ul www.optimusdigital.ro si de la magazinele de pe strada Maica Domnului.

LCD:

Specificatii:

Item Description
Size 2.2 inch
Resolution 240(RGB) x 320
Interface 4-Wire SPI
Color Depth262K/65K
Technology Type a-Si
Pixel Pitch (mm) 0.141×0.141
Pixel Configuration R.G.B. Vertical Stripe
Display Mode TM with Normally White
Surface Treatment(Up Polarizer) Clear Type(3H)
Viewing Direction 6 o’clock
Gray Scale Inversion Direction 12 o’clock

PinMap:

Schema electrica

Software Design

Pentru a realiza acest proiect am avut nevoie de:

  • avr-gcc(cu Programmer's Notepad)
  • bootloadHID
  • Biblioteca pentru afisare pe LCD

Tot codul jocului este scris in fisierul main.c. Imaginile desenate pe LCD sunt reprezentate prin matrici, un element al matricei reprezinta un pixel, iar valoare elementului reprezinta culoarea(LCD-ul este color). Pentru fiecare imagine(matrice), am scris o functie care deseneaza/sterge imaginea de pe LCD. Racheta este manipulata din butoane. La apasarea unui buton, se actualizeaza variabilele care mentin pozitia actuala a obiectului. Daca in ciclul curent, al buclei while, valorile pozitiei (X,Y) difera de ciclul precedent, atunci este stearsa si desenata din nou pe noua pozitie.

Cu “rand” generez numere aleatoare, care reprezinta numarul gainii care va arunca un uo. Cu o frecventa stabilita ciclu de aruncarea oului se repeta.

Pentru tratarea coloziunilor dintre ou-rachete si proiectil-gaina, la fiecare iteratie verific daca pozitia oului se intersecteaza cu pozitia rachetei sau daca pozitia proiectilului se intersecteaza cu pozitia unui gaini.

La terminarea jocului, acesta se poate restarta apasand butoanele “standa” si “dreapta”.

Rezultate Obţinute

Concluzii

Sunt foarte multumit si mandru de acest proiect, pe care l-am realizat de la 0. Multumesc intregii echipe de PM! A fost o experienta destul de placuta!

Download

Bibliografie/Resurse

* Cablaj imprimat 2016 http://cs.curs.pub.ro/wiki/pm/cablaj/proiect2016

* ili9341 avr library

pm/prj2016/ddragomir/igorparvan.txt · Last modified: 2021/04/14 17:07 (external edit)
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