Basketball Game

Student: Pirvu Stefania
Grupa: 332CC

Introducere

Proiectul consta intr-un mini-joc de baschet. Exista doua moduri de joc, pentru un jucator sau pentru 2 jucatori. Joc singleplayer: Scopul este sa se arunce cat mai multe mingi intr-un interval de timp setat. Scorul si timpul ramas sunt afisate permanent. Joc multiplayer: Jucatorii arunca pe rand la cos. Pe display este afisat constant scorul cat si jucatorul al carui rand este. Randul jucatorului este indicat de asemenea si de culaorea ledurilor.

Descriere generală

La inceputul jocului se va seta timpul pentru joc cu ajutorul unui buton. Dupa ce timpul este setat se apasa butonul de start. Esista 2 butoane pentru a alege modul de joc. Pentru modul singleplayer: Cand senzorul detecteaza prima minge care intra in cos, atunci se incepe numaratoarea inversa,afisata pe modulul 7-segmente. Cand senzorul detecteaza o minge, se modifica scorul si buzzer-ul este declansat. Pentru modul multiplayer contorizarea timpului incepe imediat. Pe ecran este afisat numarul jucatorului care este la rand.Acesta este indicat si de culoarea ledurilor. Daca jucatorul arunca mingea in cos, se modifica automat jucatorul curent. Daca jucatorul rateaza, se va apasa pe un buton pentru a trece la celalalt jucator.

La finalul jocului se va declansa un sunet si se va afisa mesajul “Game Over” pe modulul 7 segmente. Senzorul cu infrarosu este asezat pe inelul coșului de baschet. Când detectează o minge, scorul se modifică penru jucătorul curent și se declanseaza buzzer-ul și banda led.

Hardware Design

Listă piese:

  • Arduino uno
  • Modul Senzor Infrarosu de Obstacole
  • Modul afisare 7 segmente
  • LCD
  • Modul I2C pentru LCD
  • Bandă LED
  • Buzzer
  • Rezistențe
  • Butoane
  • Fire
  • Cos de basket

Software Design

Mediul de dezvoltare
  • Arduino IDE
Biblioteci folosite
  • Arduino.h
  • TM1637Display.h → pentru modulul de afisare pe 7 segmente
  • FastLED.h → pentru banda led
  • Wire.h
  • LiquidCrystal_I2C.h → pentru display
Implementare Software

SetUp

Am initializat LCD-ul, banda led, pinii de input pentru senzor si cele 4 butoane si pinul de output pentru buzzer.

Loop

Daca jocul inca nu a inceput (start == 0) citestc inputurile date de butoane. Daca este apasat butonul 4, timpul creste cu 20 de secunde. Daca este detectat input de la butonul 3, jocul incepe, (start = 1). Daca jocul a inceput, dar nu s-a ales modul de joc (game_mode == 0), se asteapta input de la butoanele 1 sau 2 pentru a seta modul de joc. Daca modul de joc este 1, se va apela functia multiplayer_game_mode , altfel se va apela functia singleplayer_game_mode.

Multiplayer_game_mode

Daca este primit un input de la unul dintre cele 2 butaone, se schimba jucatorul care este la rand. Daca este activat senzorul, atunci scorul jucatoruluicurent se modifica Se apeleaza functiile SetupGreenPalette() si SetupBluePalette() pentru a seta culaorea ledurilor in functie de jucatorul care este la rand. Se afiseaza timpul curent pe modulul 7 segmente si se apeleaza functia stepUp() pentru a creste timpul

Singleplayer_game_mode

Pe acelasi principiu ca si la multiplayer, daca senzorul este activat se modifica scorul. Se afiseaza timpul curent pe modulul 7 segmente si se apeleaza functia stepDown() pentru a arata timpul ramas

StepUp / StepDown

Sunt doua functii foarte asemanatoare care modifica timpul. In cazul stepUp, daca timpul a atins numarul de minute si secunde setate la inceput, jocul s-a terminat, (game_over = 1) . In cazul stepDown, timpul scade, iar daca a ajuns la 0 jocul se termina. In ambele cazuri pe modulul 7 segmente va fi afisa mesajul Game Over si buzzer-ul va fi activat

Functii pentru culoare led

Functiile SetupGreenPalette(),SetupPurpleAndGreenPalette(), SetupBluePalette() seteaza paleta de culori pentru inelul de leduri, iar functia FillLEDsFromPaletteColors itereaza prin index-urile ledurilor pentru a oferi senzatia de miscare a culorilor

Rezultate Obţinute

Concluzii

A fost printre putinele proiecte la care am lucrat cu placere si fara stres. Am reusit sa realizez ce mi-am propus. Pe masura ce implementam am adaugat mai multe functionalitati fata de ce mi-am propus initial.

Download

Jurnal

  • 27.05 -Alegere tema proiect
  • 28.04 - Creare pagine wiki
  • Achizitionare componente
  • 15.05 - Montaj hardware
  • 15.05→24.05 - Scris cod

Bibliografie/Resurse

pm/prj2023/dene/stefaniapirvu.basketballgame.txt · Last modified: 2023/05/29 23:28 by stefania.pirvu
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