This is an old revision of the document!


Dinosaur Game Chrome

Introducere

Proiectul este insiprat din jocul care apare pe Google Chrome atunci cand nu avem acces la internet si este un endless runner cu un dinosaur care trebuie sa sara peste obstacole. Scopul proiectului este realizarea unui endless runner similar.

Prezentarea pe scurt a proiectului vostru:

  • ce face
  • care este scopul lui
  • care a fost ideea de la care aţi pornit
  • de ce credeţi că este util pentru alţii şi pentru voi

Descriere generală

Acest sistem include un Arduino UNO, conectat la un ecran LCD, un buton si un LED. Jocul este similar cu cel disponibil în browser atunci când conexiunea la internet este întreruptă. Jucătorul controlează un personaj care trebuie să sară peste obstacole generate aleatoriu. Fiecare obstacol trecut cu succes aduce un punct.

LED indică nivelul de dificultate, dupa un anumit timp acesta se va aprinde si va face jocul mai greu. Un potențiometru este utilizat pentru ajustarea contrastului ecranului LCD.

O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează.

Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html

Hardware Design

Lista componente:

  1. Arduino UNO
  2. Ecran LCD
  3. Buton
  4. LED
  5. Potentiometru
  6. Rezistente 220k si 10k
  7. Fire tata-tata, mama-tata

Schema Electrica:

Software Design

Componente Software Biblioteci Utilizate

Codul folosește biblioteca LiquidCrystal_I2C pentru a controla display-ul LCD prin interfața I2C. Această bibliotecă facilitează comunicarea și afișarea informațiilor pe LCD. Definiții de Pini

În cod sunt definite următoarele pini:

  BUTTON_PIN: Pinul digital conectat la buton, utilizat pentru a sări și a restarta jocul.
  LED_PIN: Pinul digital conectat la LED, utilizat pentru feedback vizual.

Variabile și Constante

Jocul utilizează mai multe variabile și constante pentru a gestiona starea jocului:

  1. baseLine: Linia pe LCD unde dinozaurul se deplasează.
  2. jumpLine: Linia pe LCD unde dinozaurul sare.
  3. obstacleDelay: Întârzierea inițială pentru mișcarea obstacolelor, determinând viteza lor.
  4. obstaclePosition: Poziția curentă a obstacolului pe ecran.
  5. score: Punctajul acumulat de jucător.
  6. obstacleChar: Caracterul curent utilizat pentru a reprezenta obstacolul.

Funcții Principale setup()

Funcția setup() inițializează componentele hardware și software necesare pentru joc. Aceasta inițializează display-ul LCD, setează pinii pentru buton și LED și configurează starea inițială a jocului apelând funcția initializeGame(). loop()

Funcția loop() reprezintă bucla principală a jocului. Aceasta verifică dacă jocul s-a terminat și așteaptă restartarea în caz afirmativ. Funcția citește starea butonului pentru a determina dacă jucătorul dorește să sară, actualizează poziția obstacolelor la intervale regulate și redesenează ecranul pentru a reflecta starea curentă a jocului. De asemenea, funcția verifică coliziunile dintre dinozaur și obstacole. initializeGame()

Funcția initializeGame() resetează variabilele și starea jocului la început sau după un restart. Aceasta curăță display-ul LCD, resetează variabilele de stare (isJumping, gameOver, obstaclePosition, score), resetează temporizările (lastObstacleTime, obstacleDelay) și oprește LED-ul. startJump()

Funcția startJump(unsigned long currentMillis) inițiază săritura dinozaurului. Aceasta setează variabila isJumping la true și calculează timpul când săritura se va termina (jumpEndTime). endJump()

Funcția endJump() finalizează săritura dinozaurului. Aceasta setează variabila isJumping la false și șterge dinozaurul de pe linia de sărit. moveObstacle()

Funcția moveObstacle(unsigned long currentMillis) actualizează poziția obstacolului. Aceasta șterge obstacolul de la poziția curentă, decrementează poziția obstacolului și resetează poziția acestuia atunci când iese din ecran, actualizând punctajul. De asemenea, alege un caracter aleatoriu pentru noul obstacol și ajustează viteza obstacolelor în funcție de punctaj. drawScreen()

Funcția drawScreen() desenează pe ecran starea curentă a jocului. Aceasta șterge pozițiile anterioare ale dinozaurului și obstacolului și desenează dinozaurul în poziția corectă, fie pe linia de sărit, fie pe linia de bază. Obstacolul este desenat la poziția sa curentă. checkCollision()

Funcția checkCollision() verifică dacă dinozaurul a colizionat cu un obstacol. Dacă obstacolul este la poziția dinozaurului și acesta nu sare, funcția afișează un mesaj de coliziune și punctajul final, și setează variabila gameOver la true. checkForRestart()

Funcția checkForRestart() verifică dacă butonul este apăsat pentru a restarta jocul. Dacă butonul este apăsat, funcția așteaptă eliberarea butonului și apoi apelează initializeGame() pentru a restarta jocul.

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2024/sseverin/andrei.zipis2406.1716721520.txt.gz · Last modified: 2024/05/26 14:05 by andrei.zipis2406
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