Proiectul meu este un joc Nim [1], single player contra computer cu AI perfect. Scopul este de a realiza un joc ce ilustreaza cat de simplu este de fapt pentru computer sa joace perfect un joc in aparenta complicat.
Regulile jocului: Se considera N gramezi, fiecare gramada avand un numar de pietre. La fiecare pas, jucatorul aflat la mutare elimina un numar nenul de pietre (eventual toate) dintr-o singura gramada. Jucatorii muta alternativ. Castigatorul este cel care ia ultimele pietre. De obicei, jocul NIM se joaca cu 3 gramezi de pietre, insa strategia de castig este aceeasi indiferent de numarul gramezilor [2].
Pentru simplificare, am implementat varianta cu 3 gramezi cu 5,4 si 3 pietre.
Pe langa placa de test, am mai facut inca o placa cu urmatoarele componente:
Ecranul este de la un Nokia 3310.
Piesele le-am achizitionat de la Syscom. Ecranul l-am achizionat de la un Service din Crangasi.
Am pornit de la driverul de la Quantum Torque: [3]. Acesta contine functii pentru initializarea lcd-ului, scrierea de caractere si siruri, pozitionarea cursorului, si are definita o lista de caractere ce pot fi afisate. Trebuie modificat makefile-ul pentru atmega16 (in loc de atmega64 cum este el), altfel nu merge nici macar simularea in Proteus.
Trebuie modificat in lcd.h portul la care este conectat ecranul si fiecare pin in parte. In cazul meu, conform schemei de mai sus, definitiile sunt:
#define LCD_CLK_PIN (1<<PC5) #define LCD_DATA_PIN (1<<PC1) #define LCD_DC_PIN (1<<PC4) #define LCD_CE_PIN (1<<PC2) #define LCD_RST_PIN (1<<PC3) #define LCD_PORT PORTC #define LCD_DDR DDRC
Am folosit 4 butoane, primele 3 sunt folosite in principal pentru a lua pietre din gramezi, iar al patrulea pentru a ceda randul.
Placutele:
Screenshots din simulator:
Screenshots din realitate:
Se poate observa ca exista o diferenta intre suprafata utila a ecranului in simulator si cea din realitate. In realitate se taie o mica fasie din partea de sus si exista o mare zona in plus in partea de jos. Aceasta zona de jos nefiind programata de driverul folosit, apare colorata aleator.
Schema Proteus, Schema Eagle si cod: archive.zip