Ciprian-Marian COSTEA (66993) - Snake_Ultra

Autorul poate fi contactat la adresa: Login pentru adresa

costea_ciprian07@yahoo.com

Introducere

Proiectul meu doreste sa refaca in primul rand functionalitatile de baza ale jocului Snake, iar in al doilea rand, sa implementeze o serie de functionalitati suplimentare.
Printre functionalitatile suplimentare se numara:

  • aparitia la un anumit interval de timp, tot mai des pe parcursul jocului, a unor potiuni (sfere speciale) ce la coliziune vor omori jucatorul.
  • buzzer-ul va emite sunete diferite la miscarea in stanga, dreapta, sus, jos a jucatorului. De asemenea va scoate un sunet diferit la finalul jocului.
  • pe parcursul jocului in functie de numarul de “item-uri” luate de catre sarpe se va creste nivelul de dificultate (atat in functie de viteza initiala si de rata de crestere a acesteia, cat si de intervalul de aparitie a “item-urilor”).

Descriere generală

Schema Block:

       Microcontroller-ul primeste date de input de la cele 5 butoane si trimite date de output atat la LCD , cat si la buzzer.

Hardware Design

Lista de piese necesare:

  • Placa de baza cu microcontroller → ATmega324
  • LCD Display Module 128×128
  • Buzzer Pasiv
  • 5 Push Buttons
  • Rezistente
  • Header de pini Mama
  • Conectori de tip Mama-Tata si Mama-Mama

Schema electrica:

Software Design

Descrierea codului aplicaţiei (firmware):

  • Mediu de dezvoltare: am folosit WinAVR
  • Am ales sa creez obiectul snake ca fiind compus din mai multe patratele, definite de o pozitie pe axa OX, respectiv OY, si de un sens de deplasare. La fiecare deplasare a snake-ului se genereaza o intrerupere in urma careia buzzer-ul va emite un sunet specific. In cadrul jocului se poate trece la un nivel superior daca se cumuleaza un anumit numar de “bomboane”. Atunci sarpele se va misca mai repede, iar “bomboanele” vor alterna mai repede. Jocul dispune de maxim 3 nivele, insa numarul acestora poate fi extins foarte usor.
  • Pentru testarea coliziunii dintre capul sarpelui si “bomboane”, “ziduri” sau restul corpului sau am folosit metoda Axis Aligned Bounded Box.
  • La finalul jocului am ales sa implementez o tranzitie compusa din mai multe culori. De asemenea inainte de aceasta, buzzer-ul va emite o melodie.
  • Librării şi surse 3rd-party: am ales sa folosesc biblioteca grafica gasita intr-un proiect din anul trecut, avand acelasi tip de LCD ca cel folosit de mine.

Rezultate Obţinute

Proiectul respecta toate specificatiile din descrierea initiala.

Placa de baza:

Montajul complet:

Video cu rezultatul final: 5RiU9Uo1wC

Concluzii

  • Acest proiect a reprezentat o provocare, cu precadere partea de inceput in care a trebuit sa lipesc corect toate componentele necesare.
  • In urma implementarii partii de software, mi-am consolidat cunostintele legate de lucrul cu intreruperi.
  • Obtinand rezultatul final dorit, pot spune ca satisfactiile nu au intarziat sa apara.

Download

Arhiva de mai jos contine:

  • fisierele folosite in implementare (partea de software)
  • Schema electrica
  • fisier README

proiect_pm_costea_ciprian_marian_332ca.zip

Jurnal

  • 22.04.2017 → Alegerea temei proiectului + componenete necesare + schema bloc
  • 03.05.2017 → Implementarea placii de baza
  • 06.05.2017 → Finalizarea schemei electrice
  • 12.05.2017 → Schimbarea tipului de LCD folosit
  • 20.05.2017 → Modificarea schemei electrice datorata schimbarii LCD-ului
  • 21.05.2017 → Finalizarea montajului: Interconectare placa de baza + placa de test + LCD
  • 24.05.2017 → Finalizarea partii software a proiectului.

Bibliografie/Resurse

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

  • Biblioteca grafica folosita (din cadrul proiectului de mai jos): 23456
  • Pentru partea legata de intreruperi : lab2
  • Pentru partea legata de PWM: lab3
  • Documentația în format PDF
pm/prj2017/astratulat/snake-ultra.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