Table of Contents

Pong Game

Autor: Gherasie Stefania-Elena
E-mail contact: Gherasie Stefania-Elena

Introducere

Jocul de Pong este unul dintre primele jocuri create pe calculator, fiind o simulare a jocului de tenis de masa. Fiecare jucator controleaza un cursor, miscandu-l pe verticala de-a lungul ecranului. Cursorul este folosit sa loveasca o minge care se plimba intre jucatori.

 https://www.hiig.de/en/on-imitation-and-innovation-in-the-games-sector-from-pong-to-ridiculous-fishing-2/

Descriere generală

Descrierea funcționalității

Jocul incepe prin apasarea unui buton, pornind de la scorul 0-0. Pe modulul LCD se va afisa mingea si cursoarele celor 2 jucatori. Cursoarele se pot muta pe orizontala atat cat permite ecranul. Mingea se loveste de marginile verticale ale ecranului si isi schimba directia de mers. Jucatorii vor controla cursorul prin intermediul unui Joystick, ambii urmarind sa loveasca mingea. Un jucator pierde un punct in defavoarea celuilalt jucator daca rateaza sa loveasca mingea. Dupa fiecare punct castigat se afiseaza mesajul “Player_x won!” si scorul.

Pentru inceperea rundei urmatoare trebuie apasat din nou pe butonul de start. Scorul va fi afisat permanent in partea de sus a ecranului. Jocul continua la infinit sau pana la resetarea placutei Arduino.

Schema bloc

https://drive.google.com/file/d/1sjQsFU3GSvUw2H6h1fwW-gWV0LQzg5yz/view?usp=sharing

Hardware Design

Listă de piese

  1. Arduino Uno R3
  2. Modul LCD 2004
  3. Modul I2C pentru LCD 2004
  4. Modul Joystick x 2
  5. Breadboard
  6. Rezistențe 1kΩ
  7. Buton

Schema electrica

https://drive.google.com/file/d/1oNVWouLF_Xi1eN_7gVoLRyr-F-NDDh1Q/view?usp=sharing

Design Fizic

https://drive.google.com/file/d/1Bn9C4pVuZasxBsulHTZunqX2TxsEKBfq/view?usp=sharing

Software Design

Codul sursa consta in principal in comunicarea cu LCD-ul si controlarea elementelor afisate. Pentru cursoare si minge s-au creat custom_characters retinute sub forma de vectori. Un cursor este format dintr-o parte superioara si una inferioara pentru a fi posibila afisarea pe randurile LCD-ului. Miscarea obiectelor se face prin shiftarea la stanga/dreapta a elementelor vectorilor. Pentru minge se tine cont ca aceasta isi poate schimba directia de mers atunci cand se loveste de un cursor sau de marginile ecranului. Miscarile cursoarelor sunt declansate de schimbarea pozitiei Joystick-ului.

Se testeaza coliziunile atunci cand mingea ajunge in acelasi bloc ca unul dintre cursoare, iar daca se observa ca mingea se suprapune pe un cursor se incheie runda curenta si creste scorul jucatorului oponent.

Elementele si scorul se afiseaza constant in timpul jocului, iar intre runde se afiseaza “Press button to start” pana cand se apasa pe butonul de START.

S-au folosit bibliotecile: Wire.h, LiquidCrystal_I2C.h.

Rezultate Obţinute

Demo pentru a arata functionalitatea: Demo Pong Game

Concluzii

Proiectul a fost foarte interesant de realizat. Dificultatea principala a fost scrierea codului care sa afiseze corect pe ecran. Mi-as fi dorit ca afisajul sa fie vizibil mai placut, insa doar atat am putut realiza. O alta problema a fost conectarea provizorie a LCD-ului pana la includerea adaptorului I2C.

Download

  1. Cod Arduino: CodArduino.zip
  2. Schema electrica in Eagle: SchemaElectrica.zip
  3. Schema design-ului hardware in Fritzing: SchemaHardware.zip

Bibliografie/Resurse

Link direct: Pong Game
Documentatie in format PDF: Documentatie PDF