Table of Contents

Vlad CARABIN (78300) - Magic: The Gathering Life Counter

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Magic: The Gathering

Magic: The Gathering este primul si cel mai jucat trading card game din lume. Creat in 1993 de matematicianul Richard Garfield impreuna cu Wizards of the Coast, jocul a avut mare succes. 25 de ani si aproape 80 de seturi de expansiune mai tarziu MTG este inca cel mai jucat trading card game fizic si atrage pe zi ce trece jucatori noi.

Eu sunt unul dintre impatimitii jocului si imi place foarte mult sa construiesc pachete, sa joc cu prietenii si sa merg la competitii la store-urile locale. Jocul este foarte complex dar, pe scurt, fiecare jucator incepe cu 20 viata si obiectivul este sa aduci oponentul la 0 viata sau 10 poison pentru a castiga (asta in modul standard - sunt mai multe moduri de joc iar proiectul meu va putea fi configurat pentru toate)

Counter-ul meu

Singurul neajuns este modul in care se contorizeaza toate aceste lucruri. In general se scrie pe hartie sau se folosesc zaruri spin-down cu 20 de fete. Evident, exista si anumite aplicatii pe telefon pentru Magic in care poti contoriza toate aceste lucruri dar toate au anumite probleme (lack of features sau mananca prea multa baterie)

Voi face un gadget dedicat pentru asa ceva, cu toate functiile pe care mi le doresc eu. Astfel, eu si prietenii mei ne vom putea bucura de o experienta mai buna de joc. Cu ajutorul counter-ului ne vom putea bucura mai mult de joc si vom putea fi mai atenti la acesta. Evidenta tuturor acestor parametri se va tine de acum mult mai usor si mai sigur.

Descriere generală

LE: Am pus un speaker mare in loc de buzzer si am gasit si un keypad 4×4 alaturi de butoane.

Features:

Toate cele de mai sus vor fi controlate din butoane si keypad si rezultatul va fi afisat pe LCD, iar sunetele se vor auzi din speaker.

Hardware Design

Lista piese:

Schematic:

LE: DC-ul de la LCD l-am legat la PB1, am folosit doar 5 butoane legate la PB2, PB3, PD0, PD1 si PD4. Speaker-ul e pe PD5. Keypad-ul l-am pus pe portul A pana la urma deoarece portul C nu are 8 pini utili in linie, iar conectorul mama al keypadului cere 8 pini in linie.

Software Design

Video Demo: Fa-6kMpF5Vs

Tool-uri folosite:

Proiectul are 5 butoane numerotate ca in poza alaturata:

Cand este pornit se va afisa pe LCD numele proiectului si se va canta o melodie pe buzzer (nokia tune). Apoi cand se va apasa pe butonul de meniu (0), pe LCD apare meniul principal cu 4 butoane care pot fi actionate din cele 4 butoane de pe placuta (1, 2, 3, 4), fiecare actiune corespunzand butonului care se afla in aceeasi pozitie cu ea. Alternativ, selectia poate fi facuta cu ajutorul keypad-ului apasand A, B, C sau D in functie de selectia dorita.

Cele 4 butoane din meniul principal sunt:

Daca se va selecta Standard sau Commander, pe LCD se va solicita introducerea numarului de playeri (intre 2 si 4) de la keypad si confirmarea selectiei. (Nu se accepta inputuri invalide). Apoi, in functie de numarul de playeri, se va crea un layout cu 2 sau 4 jucatori.

Pentru meci cu 2 playeri, ecranul va fi impartit in 2 de o linie verticala si fiecare player va avea un Life Total (rosu) si un Poison Counter (verde), iar in cazul in care meciul este de Commander, atunci va avea si Commander casting (albastru).

Daca meciul este de 3 sau 4 persoane, atunci va fi incarcat un layout cu 4 cadrane, despartite de o linie orizontala si una verticala, in fiecare cadran existand toate counterele pentru un anumit player. Daca meciul este de 3 oameni, Player 4 de pe ecran va incepe jocul ca si cum ar fi pierdut deja si nu va putea fi selectat.

Modul de interactiune cu counterele de viata, poison si commander casting este prin intermediul butoanelor 1, 2, 3 si 4 si a tastelor * si # de pe keypad astfel:

Selectia player-ului curent se va face de pe keypad folosind butonul corespunzator numarului player-ului la care se doreste sa se faca modificarea.

Oricand se poate iesi din modul counter apasand pe butonul 0 si se va reveni in meniul principal de unde se vor putea face alte selectii si se va putea reveni apoi in modul counter continuand jocul cu contoarele in aceeasi configuratie.

Pentru a elimina un player din joc trebuie fie sa i se aduca life counter-ul la 0 fie poison counter-ul la 10. Cand un jucator este eliminat, pe ecran va aparea un X in dreptul life counter-ului si nu vor mai aparea poison counter-ele si commander casting-ul. De asemenea, jucatorul nu va mai putea fi selectat ca jucator curent din keypad.

Atunci cand ramane in joc un singur jucator, acesta va fi castigatorul, veti fi dusi intr-un winning screen unde se va scrie mare pe LCD player-ul care a castigat meciul respectiv si se va canta un cantecel de victorie din buzzer. Din acest winning screen se va iesi apasand butonul 0 si veti fi intorsi la meniul principal. De acum, cand se vor selecta optiunile “Standard” sau “Commander” va aparea iar cererea pentru numarul de jucatori si se va crea un joc nou.

Daca din meniu se va selecta optiunea Theme, aceasta va comuta intre cele doua teme disponibile (Dark si Light), fara a afecta progresul meciurilor in curs de desfasurare. Mai jos puteti vedea meniul principal pe tema Light.

Daca se va selecta optiunea Dice, vom fi trimisi intr-un nou meniu cu 4 optiuni cu modul de selectie la fel ca in meniul principal. Atunci cand se intra in meniul de Dice se va seta un seed pentru generare de numere random in functie de valoarea din registrul in care numara timerul 0. Optiunile disponibile sunt:

Flip coin va emula aruncarea unei monezi si va scrie mare pe ecran HEADS sau TAILS, iar 6 sides si 20 sides vor emula aruncatul cu un zar cu 6 sau 20 de fete afisand mare pe ecran un numar in range-ul 1-6 sau, respectiv, 1-20. In toate aceste moduri se poate apasa pe oricare dintre butoanele 1, 2, 3 si 4 pentru re-roll si pe butonul 0 pentru a ne intoarce la meniul de Dice.

Modul custom emuleaza intr-un mod diferit aruncatul cu zaruri cu intre 2 si 9 fete folosind keypad-ul. In acest mod se asteapta apasarea unei taste de pe keypad. Cat timp va fi tinuta apasata pe ecran vor aparea rapid numere random din range-ul corespunzator tastei apasate. La ridicarea degetului de pe tasta pe LCD va ramane afisata valoarea aruncarii respective.

Rezultate Obţinute

Rezultatele au fost cele dorite: am obtinut un gadget perfect pentru jucatorii de Magic: the Gathering pe care abia astept sa il testez impreuna cu prietenii mei. Singurele imbunatatiri pe care le-as putea aduce ar mai fi sa adaug suport pentru 5-6 playeri (nu aveam personal nevoie pentru ca nu am jucat in asa multi decat foarte rar) si sa ii gasesc o cutie in care sa il pun, sa ii pun niste butoane mai mari cu capace colorate (stil arcade) pe care le-am cumparat dar aveau pinii prea grosi pentru placuta mea, si sa ii gasesc o modalitate sa il alimentez altfel decat de la usb-ul laptopului. (poate de la o baterie externa pentru telefon)

Concluzii

A fost o experienta foarte interesanta si placuta. Mi-a placut in special partea hardware, adica sa lipesc componentele pe placuta si sa imi gasesc perifericele potrivite si sa le fac sa comunice cu microprocesorul cum imi doresc eu. Mai lucrasem inainte cu Arduino si mai facusem cateva proiectele dintre care un line follower pentru sesiunea de comunicari stiintifice studentesti de acum 2 ani impreuna cu 2 colegi.

Mereu mi-a placut partea asta si cu siguranta ma voi mai juca cu lucruri de genul. Chiar ma bucur mult ca am avut de facut acest proiect, a fost partea mea preferata din tot semestrul. Imi pare rau ca s-a suprapus cu multe alte teme si teste si nu m-am putut ocupa de el asa mult cum mi-as fi dorit. Cumva, am reusit sa il termin la timp si sa ma ocup si de celelalte. Inca nu stiu cum.

Download

proiect_pm_vladcarabin_332_ca.zip

Jurnal

Bibliografie/Resurse