Bogdan-Lucian BASUC (24868) - Pong LCD

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Am ales sa realizez jocul Pong pe un LCD cu pixeli. Input-ul va fi primit de la butoane, iar jocul se poate juca in 2 moduri:

  1. Singleplayer: joci impotriva unui BOT.
  2. Multiplayer: vor juca 2 jucatori, fiecare v-a avea butoanele lui.

Pentru a incepe jocul trebuie sa alegi modul de joc, setand switch-ul de sub LCD la numarul de juactori care vor juca(1 sau 2). De asemenea jocul va avea sunete pentru diferite momente cum ar fi: bila a tins unul dintre pereti sau un jucator, runda s-a terminat. Pe parcursul jocului se va afisa pe ecranul LCD scorul. O partida este castigata atunci cand un jucator a acumulat 4 puncte. In acel moment se revine la starea initiala cand iti alegi modul de joc.

Am ales sa realizez acest proiect pentru ca vreau sa vad cum este sa programezi un joc atat software cat si hardware.

Descriere generală

Schema bloc:

Butoanele jucatorilor vor controla afisajul si vor determina scorul. Pentru modul singleplayer voi implementa un BOT care va controla oponentul si care sper ca va fi destul de bun(aparent nu poate fi batut).

Hardware Design

Schema electrica:

Lista de piese:

  • 1 x Modul LCD de 1.44'' (128×128 px) 30 lei
  • 1 x Buzzer activ 7 lei
  • 4 x Leduri 0.40 lei
  • 4 x Butoane 8 lei
  • 1 x Switch 4 lei
  • 4 x Rezistente 100 Ohmi 0.40 lei
  • Fire conectoare 4 lei
  • Set componente de baza 36 lei
  • 1 x Placuta de test 6 lei

Software Design

Pentru dezvoltarea aplicatiei am folosit acelasi mediu ca la laborator, mai exact Programmers Notepad. Pentru a duce la indeplinirea proiectului am folosit o biblioteca furnizata de catre producator, biblioteca care se afla la paragraful Bibliografie/Resurse. M-am folosit doar de anumite functii din aceasta biblioteca, cum ar fi desenarea unui dreptunghi si setarea anumitor pixeli.

Jocul incepe cu un ecran in care se afla numele studentului care a realizat proiectul si grupa acestuia. Jocul incepe numai daca este setat numarul de jucatori din switch-ul de sub ecran. As fi putut sa fi facut asta si din software, sa se afiseze pe ecran, dar am vrut sa aduc si o componenta hardware in plus proiectului. La partea de software a trebuit sa implementez propriile functii pentru scrierea literelor/cifrelor pe ecran, folosindu-ma de functia de setare a pixelilor oferita de biblioteca. M-am folosit de variabile globale pentru a mentine diferite stai ale jocului, precum:

  • Modul de joc(single/multi)
  • Scorul jucatorilor
  • Pozitiile celor doi jucatori
  • Pozitia bilei

De asemenea am folosit define-uri pentru a-mi reseta jocul atunci cand un jucator inscrie.

O runda incepe prin alegerea in mod aleator a pozitiei in care se va duce prima data bila. Dupa fiecare frame verific colozinea bilei cu peretii si cu jucatorii. Verific apoi daca partida s-a terminat(daca un jucator a ajuns la 4 puncte). Din cauza framerate-ului destul de mic al display-ului in zona de joaca se vor vedea momentele cand se redeseneaza mingea si miscarile jucatorilor.

Rezultate Obţinute

Proiectul functioneza cum mi-am dorit, dupa cum se poate vedea si din poze.

Concluzii

Original am folosit un display cu 20 de pini de pe adelaida. Am stat ceva zile sa gasesc o biblioteca buna, care sa functioneze pentru el, dar in final am zis sa trec la alt display, pe care il controlez mult mai usor. In urma acestor probleme intampinate am facut urmatoarea legatura: numarul de pini este direct proportional cu dificultatea programrii.

Download

Jurnal

Terminat proiect: 27.05.2016

Bibliografie/Resurse

pm/prj2016/drugescu/lcd_pong.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