Iulia-Ana-Maria SAVA (66886) - Hangman
Autorul poate fi contactat la adresa: Login pentru adresa
Introducere
Obiectivul acestui proiect este realizarea jocului Hangman pe LCD.
Regulile jocului sunt urmatoarele:
Initial se va alege nivelul de dificultate: Easy, Medium sau Hard, ce va reflecta numarul de litere al cuvantului, adica: daca se va alege Easy, va trebui ghicit un cuvant scurt, ce are intre 3 si 4 litere, daca se va alege Medium cuvantul va avea intre 5 si 7 litere, iar daca se va alege Hard va avea intre 8 si 12 litere, prima si ultima litera fiind afisate. La inceput va fi afisat pe LCD Easy, iar daca se doreste a se trece la Medium, respectiv Hard se va apasa pe butoane.
Dupa selectarea nivelului va fi afisat numarul de puncte de pana atunci, nivelul, spanzuratoarea, ulterior fiind desenat si omul spanzurat, si cuvantul cu '-' pe literele lipsa. Ulterior se va afisa litera curenta in timpul selectiei, cat si literele alese gresit pana la acel moment, pe alt rand al LCD-ului. Alegerea literelor se va efectua prin apasarea butoanelor LEFT si RIGHT, LEFT selectand litera anterioara, iar RIGHT urmatoarea. Se va apasa OK cand selectia este gata. La alegerea unei litere gresite ti se va scadea o viata. Daca vei alege iar aceeasi litera gresita tot ti se va scadea o viata.
Daca vei castiga jocul, se va afisa mesajul “You win!”, iar daca vei ajunge la 0 vieti, se va afisa “You lose!”.
Daca pierzi un joc ti se va scadea un punct, iar daca castigi se va aduna un punct. Daca ajungi la 0, vei muri definitiv, si se va afisa “You hang!”, de aceea vei incepe jocul cu 3 puncte.
Daca ajungi la scorul 5 se va afisa “You winner!” si vei trece automat la nivelul MEDIUM.
Daca ajungi la scorul 8 se va afisa “Big winner!” si vei trece automat la nivelul HARD.
Daca se va ajunge la scorul 10 se va afisa “The master!” si jocul se va incheia, adica vei fi trimis in meniul principal, de unde se alege nivelul, iar scorul va fi resetat la 3.
Am pornit de la ideea jocului Hangman clasic si am adaugat noi particularitati.
Unicul scop al acestui joc este de a aduce o doza de amuzament! Just have fun with it!
Descriere generală
Schema bloc
Hardware Design
Listă de piese
placa de baza
LCD 1.8TFT
3 butoane
Schema electrica
Software Design
Mediu de dezvoltare si implementare
Ca mediu de dezvoltare, am folosit AtmelStudio. Initial am vrut sa folosesc un LCD 20×4, insa am reusit sa il ard, asa ca l-am inlocuit cu un display 1.8 TFT. Pentru display-ul 1.8 TFT am folosit biblioteca de pe Adafruit pt. arduino, un pic modificata.
Am inceput implementarea cu desenarea elementelor de baza prin funsctiile lor aferente: spanzuratoarea, omul, litera ce va fi selectata, nivelul, modul cum este afisat cuvantul, dupa care am continuat cu partea de logica a jocului: alegerea random a ului cuvant, completarea cu literele bune, retinerea literelor gresite, calcularea vietilor, reluarea jocului din meniul cu nivele in momentul in care avem scorul 0 sau 10.
Detalii implementare
Pentru a desena pe ecran, am folosit functiile din biblioteca, cu care se pot trasa linii, dreptunghiuri, cercuri, cat si caractere. Deoarece nu exista o functie predefinita de afisare a string-urilor, a trebuit sa desenez cuvintele caracter cu caracter.
Fiecare nivel de dificultate are propriul sau vector de cuvinte. Selectarea nivelului are ca efect alegerea random a cuvantului din vectorul aferent. Este ales random un index, dupa care va fi folosit in joc cuvantul de la indexul respectiv.
Literele gresite sunt de asemenea retinute intr-un vector, ce este resetat la terminarea fiecarui joculet.
Revenirea la ecranul principal, de selectie a nivelului, la finalul jocului, l-am implementat printr-un goto ce sare la inceputul functiei main.
Rezultate Obţinute
Concluzii
Acest proiect a fost o provocare, a trebuit sa invatam multe lucruri noi, cum ar fi lipirea pieselor. Sper ca am reusit ca creez un joc interesant atat pentru mine, cat si pentru jucatori!
Download
Bibliografie/Resurse