Table of Contents

Space Invaders

Autor: Boantă Dragoș-Petru

Grupa: 334CD

Introducere

Proiectul constă în realizarea unei clone jocului vide Space Invaders. In joc, jucătorul controlează un tanc care se mișcă orizontal în partea de jos a ecranului. Deasupra, extratereștrii sunt aranjați în formații și se deplasează în grup dintr-o parte în alta, coborând treptat către jucător. Scopul este de a distruge toți extratereștrii trăgând proiectile către ei, evitând în același timp focul inamic. Pe ecran există și scuturi (bariere) care pot proteja temporar jucătorul, dar acestea se degradează atât de la focul inamic, cât și de la propriile proiectile. Pe măsură ce elimină extratereștrii, viteza lor de deplasare și frecvența atacurilor cresc, crescând dificultatea jocului.

Mi-am dorit să realizez un joc de tip arcade, care să fie popular și ușor de jucat chiar și pe un ecran mai mic. Am ales Space Invaders deoarece este un joc intuitiv, ușor de înțeles pentru oricine, dar în același timp suficient de provocator încât să-ți mențină interesul și să nu devină plictisitor prea repede.

Descriere generală

Hardware Design

Lista componente

Nume componenta Model Protocol Datasheet
Microcontroller Arduino UNO S3/ATmega328P - ATmega328P Datasheet
Joystick Sensor HW-504 ADC Joystick Datasheet
Display LCD 240xRGBx320 TPM408-2.8 SPI/ST7789V ST7798V Datasheet
Display LCD 16×2 HW-061 I2C LCD Datasheet
2 x Buzzer Buzzer pasiv 5V PWM -
Buton Push Button GPIO -
Rezistori 4×440, 4x1k, 1x10k - -
Breadboard - -

Schema electrică

schema.pdf

Detalii componente

Software Design

Mediu de Dezvoltare

M-am folosit de PlatformIO pentru dezvoltarea proiectului, codul fiind scris in C++

Librării

Majoritatea funcţiilor de comunicare cu hardware-ul au fost preluate din laborator (Si modificate pentru configuratia mea).

Pentru comunicarea cu Display-ul LCD 240xRGBx320 prin SPI, m-am folosit de librăria Adafruit ST7735 and ST7789V. A trebuit modificată putin, deoarece aceasta folosea in mod normal functia de delay de la un mediu arduino, si a trebuit sa fie schimbata sa o folosesca cea din PltaformIO.

Structura codului

Fiecare componenta hardare are cate un header si un fisier sursa in care se afla codul prin care comunic cu componenta respectiva.

Pe langa aceasta, mai sunt fisierele game.h si game.cpp care contin toate functiile pentru atat logica jocului, cat si cele care se ocupa de desenarea obiectelor jocului pe ecran.

Pentru a putea desena obiectele pe ecran, salvez informatiile despre ce pixeli trebuie desenati intr-o zona in sprites.h, respectiv sprites.cpp.

main.cpp se ocupa de rularea jocului, prin preluarea input-ul utilizatorului si afisand pe ecran rezultatul acestuia, cat si pentru a afisa pe ecran in ce stare este jocul: MENU, GAME, DEAD, OVER sau NEXT. Jocul ruleaza la 30 de cadre pe secunda.

Rezultate Obţinute

Download

Repository Github

Jurnal

Bibliografie/Resurse

Resurse Hardware

Resurse Software