Hunt or Be Hunted

Introducere

  • Nume: Glodariu Ana
  • Grupa: 331CB
  • Îndrumător: Ionuț Oțelea
  • Proiectul constă într-un joc de supraviețuire într-un tărâm terorizat de un monstru.
  • Ideea stă în crearea unei experiențe de dezvoltare pline de distracție pentru mine, ^_^ dezvoltatorul, în timp ce ofer utilizatorilor o experiență de joc captivantă și plină de bucurie odată ce proiectul este finalizat.

Proiectul este inspirat din jocul Hunt the Wumpus, iar eu intenționez să îi aduc un amestec captivant de basm și horror. Astfel, m-am decis să plasez jucătorul într-un tărâm al florilor îndepărtat, în care trăiau Împăratul Bujorel și singura lui fiică Trandafirica.

Cu toate că acest tărâm fermecător este înconjurat de frumusețea florilor, el ascunde și un pericol teribil: un monstru care devorează totul în calea sa. Monstrul a distrus toate florile, lăsând în urmă doar pământ arid și dezolat. Împăratul, simțindu-se neputincios, a anunțat în întreaga țară că orice erou care va reuși să învingă bestia va primi mâna fiicei sale în căsătorie. Cu toate acestea, se spunea că Trandafirica era de o urâțenie rară, iar niciun voinic nu îndrăznise să se confrunte cu monstrul.

Oare care va fi primul jucător care își va pune viața în pericol indiferent de premiu? Cine știe, poate zvonurile sunt false și adevărata frumusețe a Trandafiricii se ascunde dincolo de povestea spusă de gurile rele. ;-)

Descriere generală

Schemă bloc:

 Schemă bloc

Funcționalități module proiect:

  • ecranul oled e folosit pentru grafica jocului & scoreboard & timer
  • matricea de led-uri reprezintă harta jocului
  • buzzer-ul contribuie la localizarea monstrului & cufăr de comori
  • joystick-ul e pentru deplasarea prin harta sub formă de matrice

Matricea va fi de dimensiune 8×8, fiecare led reprezentând o poziție validă a jucătorului, una dintre poziții va fi ocupată de monstru și alta de cufărul cu arme necesar pentru a ucide bestia și a câștiga jocul.

În funcție de inputul dat de jucător joystick-ului, acesta se poate mișca pe orizontală și verticală pe hartă, iar folosind funcționalitatea de switch al joystick-ului el poate da hit monstrului. Pentru a da hit monstrului, jucătorul trebuie mai întâi să-l localizeze, să se afle pe o poziție de pe hartă alăturată lui pe axele ox sau oy îndreptat către el și să apese pe joystick.

Buzzer-ul va fi activat doar atunci când jucătorul este în apropierea monstrului pentru a contribui la localizarea acestuia. Acesta poate fi folosit și la redarea unor sunete când jucătorul pierde sau câștigă.

Ecranul OLED contribuie dpdv al graficii jocului, afișarea de mesaje și a unui timer. Scopul timer-ului este de a da un sentiment de survival și presiune, determinând jucătorul să învingă bestia într-un timp limitat.

Pentru a face proiectul portabil, folosesc o baterie de 9V pentru alimentarea microcontroller-ului ATmega328P, în loc să îl conectez la laptop prin USB. Placa va comunica cu ecranul oled prin I2C și cu matricea de led-uri prin SPI în funcție de inputul primit de la joystick. La rândul lui, joystick-ul va fi conectat la 2 pini analogici pentru deplasarea pe verticală și orizontală, și la 1 pin digital pentru un comportament asemănător unui buton. Buzzer-ul este conectat la un pin digital împreună cu un rezistor de 100Ω.

Hardware Design

  • Schemă de componente:

  • Listă de piese:
    • Arduino Uno (ATmega328P)
    • Modul MAX7219 LED Dot Matrix
    • Modul buzzer pasiv
    • Male-Female, Female-Female, Male-Male wires
    • 9V Battery Connector with DC Jack
    • baterie de 9V
    • Joystick Breakout Board
    • Modul OLED (128×32 px)
    • Rezistori

  • Conectare matrice de leduri - Arduino Uno (comunicare prin SPI):
    • VCC - 5V
    • GND - GND
    • DIN - PIN11
    • CS - PIN10
    • CLK - PIN13

PIN13 de pe Arduino Uno este un pin SCK (Serial Data Clock) folosit pentru comunicarea prin SPI.

Pinul de DOUT de pe modulul matrice de leduri este pentru conectarea în lanț a mai multor matrice și nu-l voi folosi pentru proiect.

  • Conectare joystick - Arduino Uno
    • GND - GND
    • +5V - 5V
    • VRX - A0 (pin analogic)
    • VRY - A1 (pin analogic)
    • SW - PIN6 (pin digital)

  • Conectare ecran OLED - Arduino Uno (comunicare prin I2C)
    • GND - GND
    • VCC - 5V
    • SDA (serial data pin)- A4 (folosit ca SDA pentru comunicarea prin I2C)
    • SCL (clock pin) - A5 (folosit ca SCL pentru comunicarea prin I2C)

  • Conectare buzzer pasiv - Arduino Uno
    • GND - GND
    • Signal Input Pin - PIN9

Al treilea pin nu se conectează la nimic.

  • Testare funcționalitate matrice → verific că pot aprinde leduri independent unele de alte în matricea de leduri și citesc și valorile din pinii analogici legați la joystick

Software Design

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

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. https://ro.wikipedia.org/wiki/Hunt_the_Wumpus

Export to PDF

pm/prj2024/iotelea/ana.glodariu.txt · Last modified: 2024/05/17 00:24 by ana.glodariu
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