Tic Tac Toe

Regurile jocului

Cel mai popular joc din copilarie.Pe romaneste,X si 0.Regurile sunt simple.Cred ca toata lumea le cunoaste,dar pentru cei care nu au mai jucat niciodata,iata pe scurt regurile:

  1. “terenu” = un patrat format din 3×3 patrate mai mici.
  2. se joaca in 2
  3. un jucator va completa un patratel cu X iar celalat cu 0.
  4. X incepe intotdeauna.
  5. se completeaza alternativ patratelele
  6. jocul se termina cand unul din jucatori a reusit sa completeze o linie,o colona sau o diagonala cu semnul sau(X sau 0)

Descriere Generala

Proiectul contine module hardware:

  • microcontroller ATMega16
  • matrice de leduri
  • 8 rezistente 100 Ω

Si software:

  • fisierul .hex

Diagrama Bloc:

Hardware Design

Piesele folosite:

  1. O matrice cu 64 LED-uri de interior
  2. 8 rezistente de 100Ω
  3. fire de legatura + banda (pentru a nu mai folosi asa de multe fire)
  4. 2 socluri
  5. 5 butoane

Dispunerea pinilor

Matricea de leduri

Schema placii de baza (varianta cu card SD si ISP)

Software Design

  1. Mediu de dezvoltare folosit AVR Studio 4 pentru codul C, iar pentru simulare am folosit Proteus(LE:bad ideea :-( ).
  2. Algoritmul pe care l-as fi folosit este cel standard pentru astfel de aplicati, si anume mini-max(poate cu taiere alfa-beta).
  3. Pentru afisarea textului am avut defintii de randuri si coloane pentru on si of.

Exemplu de definitii:

 #define COL1_ON		PORTB&=~(1<<0)
 #define COL1_OFF	        PORTB|=(1<<0)
 #define ROW1_ON	        PORTA|=(1<<0)
 #define ROW1_OFF	        PORTA&=~(1<<0)

Pentru deplasarea unui led pe matrice (folosit pentru simularea in Proteus):

while (1){
PORTD_Val = PIND;

if (!(PORTD_Val&(1<<0))) ii--;
if (!(PORTD_Val&(1<<1)))  ii++;	
if (!(PORTD_Val&(1<<2))) jj--;
if (!(PORTD_Val&(1<<3))) jj++;
if(ii<0) ii=1;
if(ii>4) ii=4;
if(jj<0) jj=0;
if(jj>4) jj=4;
aprinde(ii,jj);
_delay_ms(10);
}

Rezultate Obtinute

Rezultatele obtinute sunt totusi altele referitor la jocul de X si 0.Datorita faptului ca in Proteus nu se poate simula foarte bine si ca am avut unele probleme tehnice cu placuta(conectarea matricei in ordinea corecta,lipituri mai slabe), am reusit totusi sa afisez un mic text (chiar si cu un desen): I ♥ P M

Din punct de vedere hardware, butoanele nu le-am mai conectat intru-cat pentru afisarea textului nu aveau nici un folos.

Un filmulet: http://www.youtube.com/watch?v=IIj5QXisVtI

Concluzii

Partea cea mai dificila a fost descoperirea pinilor pentru aprinderea in ordine a matricei(am descoperit ordinea corect abia dupa ce terminasem de lipit si am vazut ca nu merge),dar si faptul ca in Proteus nu am putut simula jocul de X si 0.Asta , din cauza faptului ca nu se pot aprinde 2 leduri pe randuri si coloane diferite,adica nu pot sa aprind (0,0) cu (1,1).Pe placuta a mers,dar in Proteus nu.

In concluzie proiectul pana la momentul predarii afiseaza acel text pe matrice,dar i se poate face “tunning” pentru implementarea unui sau mai multor jocuri(chiar si in acelasi timp):x si 0, snake,collision avoidance,shooter,etc.Se mai poate adauga cu usurinta(in sensul ca raman destui pini disponibili) un display pentru scor,vieti ramase,etc.

Codul sursa il gasiti aici: 332cb_olteanu_marius.zip

Bibliografie/Resurse

pm/prj2010/amocanu/x0.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0