Table of Contents

Sava Dragos - Hangman

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul consta in realizarea popularului joc Hangman, folosind un microcontroler ATMega324PA, un keypad universal ca dispozitiv de intrare si un display LCD ca dispozitiv de iesire.

Scopul acestui proiect este implementarea unui joc care sa testeze cunostintele generale, inteligenta si capacitatea de intuitie a utilizatorilor.

Ideea de la care am plecat a fost binecunoscutul joc Spanzuratoarea , in care trebuie sa ghicesti un cuvant sau mai multe prin incercari succesive de litere.In mod clasic acesta se joaca in doi , pe hartie , dar eu m-am gandit sa realizez o varianta automatizata.

Sper ca acest joc va constitui atat pentru mine cat si pentru altii o modalitate buna de destindere si recreere.

Descriere generală

La pornirea jocului ,va fi selectat random un cuvant dintr-o lista de cuvinte predefinite.Pe ecran vor fi afisate doar prima si ultima litera , restul fiind inlocuite cu caracterul “_”.Jucatorul va selecta o litera apasand una din tastele keypad-ului.Daca litera selectata este in cuvant , atunci pe display-ul LCD , caracterul “_” aflat pe pozitia literei va fi inlocuit cu valoarea acesteia.Daca litera nu intra in componenta cuvantului, atunci numarulde vieti va fi decrementat.In momentul in care numarul de vieti ajunge la 0 , cuvantul va disparea de pe afisaj si va fi inlocuit cu mesajul “GAME OVER”.

Schema bloc :

Hardware Design

Lista piese :

Nume Numar unitati Cost (RON) Furnizor Observatii
Display LCD alfanumeric 16×2 1 www.conexelectronic.ro -
Keypad 4×3 sau 4×4 alfanumeric 1 www.conexelectronic.ro -
Rezistente 10K 2 www.conexelectronic.ro -
Placa test 1 www.conexelectronic.ro -
Fire 10 www.conexelectronic.ro -

Schema electrica :

Initial am vrut sa cumpar un key-pad 4×3 cu 7 pini , dar din pacate nu am gasit si am fost fortat de sa cumpar unul cu 14 pini . Nu am reusit sa import KeyPad-ul in Eagle , asa ca voi scrie in continuare corespondentele dintre pinii KeyPad-ului si cei ai microcontrolerului.

KeyPad pin ATMega 324 pin Semnificatie
1 GND GND tastatura
2 VCC VCC tastatura
3 PD2 tasta *
4 PD3 tasta 7
5 PD4 tasta 4
6 PD5 tasta 1
7 PD6 tasta 0
8 PD7 tasta 8
9 PD0 tasta 5
10 PD1 tasta 2
11 PB0 tasta #
12 PB1 tasta 9
13 PB2 tasta 6
14 PB3 tasta 3

Nu am gasit un datasheet corespunator , asa ca a trebuit sa determin manual acesta aseare de matrice(ce pin ii corespunde carei taste).

Software Design

Am utiliat:

- Eagle - Programmer's Notepad - avr studio

keyboard.c : - am creat programul pentru tastatura - astfel getKey() va verifica ce tasta este apasata si va returna numarul ei. - getLetter(int key, int count) va returna litera stabilita pe baza tastei numerice si a numarului de apasari pe aceasta.

lcd.c :

-l-am folosit pe cel din scheletul laboratorului 1 + mici modificari

main.c:

- startGame() :

  1. porneste efectiv jocul
  2. pentru a incepe apasati tasta 2

- playTheGame():

  1. logica de joc
  2. va stabili random ce cuvant sa aleaga din cele disponibile din vectorul bucket
  3. la inceput se vor afisa 5 caractere * ,acestea simbolizand numarul de vieti ale jucatorului
  4. in locul caracterului _ , atunci cand jucatorul ghiceste o litera , acesta va fi inlocuit cu litera corespunatoare
  5. in caz de esec , jucatorul va putea dupa 3 secunde sa inceapa un joc nou apasand tasta 2

Deoarece afisajul nu functioneaa in mod adecvat , nu am putut sa teste codul

Rezultate Obţinute

Nu am reusit sa rulez programul de test din laboratorul 1(cel cu LCD). Cred ca am avut o fefectune la placa de baza.

Concluzii

Am fost un proiect interesant , de la care am avut multe de invatat. Proiectul in sine nu este foarte complicat , dar din pacate nu am reusit sa programez LCD-ul . Imi pare rau ca nu am mai avut timp sa-l termin. Il recomand tuturor care doresc sa invete lucruri noi lucrand la un proiect simplu dar interesant.

Download

hangman.zip

Jurnal

t

Bibliografie/Resurse

http://www.atmel.com/Images/doc8152.pdf