Super Mario on LCD

Autor: Diaconu Tudor-Gabriel

Grupa: 332CA

Introducere

Scopul acestui proiect este cel de a realiza un joc de Super Mario, care să fie afișat pe un ecran LCD. De asemenea, voi folosi un joystick pentru controlul jucătorului, un buzzer pentru a marca finalul meciului, 2 butoane de start și pause și un LED care marchează starea în care se află jocul.

Descriere generală

Aplicația va funcționa în modul următor:

La început, este marcat faptul că trebuie apăsat butonul de start pentru a începe jocul. De asemenea, în această stare, becul RGB este roșu.

După ce este început jocul prin apăsarea butonului, jucătorul poate să sară peste obstacole prin intermediul joystick-ului (becul RGB devine verde). De asemenea, poate pune pauză prin utilizarea celuilalt buton de pe breadboard (becul RGB devine albastru). La momentul ciocnirii cu un obstacol, jucătorul pierde meciul și îi este afișat scorul și durata jocului.

De asemenea, la pierderea jocului, becul redevine roșu, iar jucătorului îi este indicat să apese din nou butonul pentru a începe o altă rundă, acest mesaj apărând intermitent cu momentul pierderii rundei trecute.

Schema bloc

Hardware Design

Piese necesare:

  • Arduino Uno
  • LCD cu interfața I2C
  • Fire
  • Breadboard
  • LED RGB
  • Butoane
  • Joystick
  • Buzzer

Software Design

Mediul de dezvoltare

  • Draw.io - schema bloc
  • Tinkercad + Fitzring - design-ul hardware
  • Arduino IDE - codul software

Biblioteci utilizate

  • LiquidCrystal_I2C.h - pentru conexiunea cu ecranul LCD I2C

Funcții principale

  • initializeGraphics() - funcție care inițializeaza graficile de pe ecran și marchează posibilele poziții ale băiatului din joc
  • advanceTerrain() - funcție care mută la stânga obstacolele din joc
  • drawBoy() - funcție care indică cum își modifică băiatul poziția în funcție de poziția precedentă
  • setup() - inițializarea regiștrilor necesari și marcarea pinilor ca intrare sau ieșire
  • loop() - logica proiectului și tratarea cazului de pierdere a jocului

Rezultate obținute

Meniul de start

Ecran in game

Ecran care arată cum a fost pierdută runda trecută

Ecran în pauză

Ecran la final

Concluzii

A fost un proiect foarte interesant. Mă bucur că am reușit să învăț multe noțiuni noi de-a lungul lucrului la acest proiect. Pot spune că voi folosi acest proiect pe viitor atunci când mă voi plictisi în timpul liber și, de asemenea, voi încerca să-i mai aduc îmbunătățiri.

Download

Bibliografie/Resurse

pm/prj2023/vstoica/tudordiaconu.txt · Last modified: 2023/05/28 17:58 by tudor.diaconu
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