Autorul poate fi contactat la adresa: Login pentru adresa
Proiectul va oferi o gamă variată compusă din câteva joculețe pentru a realiza petrecea timpulului liber cât mai placută și eficientă. Proiectul va folosi un LCD pentru afișarea informațiilor utile care definesc starea de joc și va permite redarea unor sunete specifice anumitor etape ale jocului, cu ajutorul unui difuzor. Aplicația va deputa printr-un meniu realizat din care utilizatorul va avea ocazia să aleagă jocul prin intermediul butoanelor.
Cu ajutorul butoanelor, utilizatorul poate alege cum să se miște în spațiul de joc pentru a colecta cât mai multă hrană. Se va afișa scorul obținut de utilizator și numărul de vieți pe care acesta le mai are la dispoziție. Atunci când șarpele se atinge, jocul se termină, utilizatorul pierzând o viață.
Se va afișa pe LCD tabla de joc, folosindu-se un simbol special pentru fiecare utilizator (culoare). Jocul se va putea juca contra unui agent inteligent sau contra altui jucător uman. Primul jucător care reușește să plaseze 4 piese consecutive pe linie, coloană sau diagonală va câștiga jocul.
Celebrul joc X și O se va putea juca selectând celula în care se va insera simbolul pentru fiecare utilizator. De asemenea, un jucător poate alege dacă va juca împreună cu un altul sau contra unui agent inteligent.
Pe lânga componentele de bază, proiectul va conține următoarele:
Denumirea produsului | Cantitatea | Specificații / Descriere |
---|---|---|
Rezistențe | 10 | https://www.conexelectronic.ro/ro/250-rezistente-025-w |
MicroController AtMega324 | 1 | - |
LCD 128 * 64 ST7920 | 1 | https://ardushop.ro/ro/home/129-display-lcd-12864-pixeli-5v-iluminat.html |
Cablu de alimentare 20 fire | 1 | https://www.conexelectronic.ro/ro/cabluri-pvc-la-metru/2747-CABLU-PLAT-20-FIRE-COLOR.html?search_query=cablu+20+fire&results=2 |
Buton | 4 | https://www.optimusdigital.ro/ro/butoane-i-comutatoare/1119-buton-6x6x6.html?search_query=buton&results=155 |
Bareta Mama + Tata | 2 | https://www.conexelectronic.ro/ro/conectori-liniari/4628-BARETA-1X20-PINI-2-54-MM-MAMA.html |
Buzzer | 1 | https://www.optimusdigital.ro/ro/audio-buzzere/633-buzzer-activ-de-5-v.html?search_query=buzzer&results=31 |
Led RGB | 1 | https://www.conexelectronic.ro/ro/diode-electroluminiscente-led/17271-LED-5-MM-RGB-5-MM-4-PINI.html?search_query=led+rgb&results=13 |
Pentru implementarea jocului am lucrat pe MAC, deoarece pe Windows am primit o eroare(side by side configuration) si nu am reusit sa o rezolv, iar pe linux, de asemenea, nu a mers. Am instalat pachetul avr-gcc si am folosit, ca editor, Sublime.
Pentru a afisa informatiile si pentru a realiza jocurile pe LCD am folosit biblioteca u8glib. Aceasta biblioteca este disponibila aici .
Mentionez ca am cautat special acest LCD care are un controller ST7920, deoarece stiam ca beneficiaza de aceasta biblioteca de care am auzit ca este mai usor de utilizat.
Pentru a produce melodii adecvate pentru momentele cheie ale jocurilor, am folosit definitii gasite …..
De asemenea, am folosit, ca si schelet de cod, solutiile laboratoarele, implementarea pornind de la acestea. Astfel, am preluat cod din laboratoarele 0, 2 si 3.
Connect4
Pentru acest joc am desenat pe LCD o matrice unde vor putea fi plasate simbolurile de joc. In momentul in care exista 3 simboluri de acelasi fel pe linie / coloana / diagonala, palyer-ul respectiv a castigat jocul. In momentul in care unul din jucatori castiga, incepe sa cante o melodie redata cu ajutorul unui Buzzer. De asemenea, in momentul in care un player realizeaza o mutare invalida este atentionat cu ajutorul unui led RGB prin aprinderea culorii rosu, iar in caz de mutare valida, ledul verde.
Tic-Tac-Toe
Se vor utiliza 5 butoane valide, 4 butoane pentru miscarea UP / DOWN / LEFT / RIGHT si un buton pentru selectarea player-ului, X / O. Jocul a fost gandit pentru a putea fi jucat de 2 persoana, insa pe viitor ma gandesc sa il imbunatatesc cu un bot care sa joaca impotriva unui player. La fiecare pas se apeleaza o functie care verifica daca exista vreo linie / coloana / diagonala care contine 3 elemente de acelasi tip sau daca mai sunt patrate necompletate.
Snake
Pentru al doilea joculet implementat, am folosit un vector cu elemente de tip Point pentru a retine coordonatele punctelor care compun sarpele. Implementarea acestui joc permite trecerea sarpelui prin “peretii” tablei de joc. Jocul se termina atunci cand este castigat, dimensiunea sarpelui devine egala cu o dimensiune maxima setata sau cand capul sarpelui atinge corpul sau. De fiecare data cand sarpele ajunge cu capul in pozitia mancarii, dimensiunea acestuia creste si se genereaza un nou punct pentru hrana.
In final am reusit sa realizez functionalitatile joculetelor si sunt foarte multumit de ceea ce a iesit. Mi-a iesit tot ce mi-a propus. Pozele descriu placa de baza standard si doua placute de test.
Pentru PMFair, componentele vor fi insurubate pe o placuta pentru a putea fi fixate oferind protectie.
Concluzia este interesanta. A fost un proiect care m-a impresionat in mod placut pentru ca am reusit sa vad care este legatura directa dintre hardware si software. Practic, este singura materie unde poti sa iei contact direct cu un proiect complex incluzand lipiturile cu letcon care au fost o adevarata provocare, pana la programarea embedded, de asemenea, fascinanta.
Proiectul functioneaza foarte ok si abia astept sa fie prezentat la PMFair. :)
Mentionez ca am avut probleme destul de mari la inceput cu LCD-ul pentru ca nu conectasem bine 3 fire, dar, dupa mult stres, am reusit sa ii dau de cap, iar proiectul functioneaza in parametri buni.
Cod arhiva : cod.zip
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:prj2017:avoinescu:dumitru_alin.
10.05.2018 - finalizare lipire placuta de baza + bootloader la lab
11.05.2018 - 18.05.2018 - dezvoltare hardware
19.05.2018 - 22.05.2018 - dezvoltare software
22.05.2018 - 23.05.2018 - completare pagina wiki cu documentatie finala