Jocul "X si 0"

Introducere

Jocul de “X si 0” se desfasoara pe o tabla de 3 x 3 si se poate juca in doi jucatori. De obicei, incepe jucatorul care reprezinta “X” (in cadrul proiectului meu acesta fiind Rosu). Scopul jocului este ca un jucator sa obtina o linie, coloana sau diagonala “colorata” cu simbolul propriu.

Descriere generală

In realizarea acestui proiect am adaptat jocul clasic de “X si 0” pentru a functiona pe o matrice de leduri bicolore (rosii - verzi). Asadar, am considerat X ca fiind rosu si 0 ca fiind verde.

De asemenea, un jucator trebuie sa aibe posibilitatea de a-si alege casuta pe care vrea sa o marcheze, acest lucru fiind realizat prin intermediul a 5 butoane - 4 pentru deplasare (sus, jos, stanga si dreapta) si 1 pentru selectia finala a casutei. Pentru ca jucatorul care e la mutare sa stie ce casuta este selectata momentan, ledul va licari folosind culoarea asociata jucatorului.

Schema bloc a proiectului este:

Hardware Design

Pe langa piesele necesare placutei de la etapa I, mai trebuiesc adaugate urmatoarele:

  • 9 leduri bicolore (eu am ales rosii-verzi);
  • 4 rezistente de 100 ohmi;
  • 5 butoane;
  • 1 bareta de pini;
  • 2 barete mama pentru pini;
  • 1 cablaj de test 100×100 cu gauri;
  • cablu pentru realizarea conexiunilor.

Schema electrica a placutei de la etapa I:

Schema electrica a ledurilor si butoanelor:

Software Design

Pentru implementarea surselor am folosit ca sistem de operare Ubuntu 11.10.

Fiecare led a fost retinut intr-o structura “led” in care retin pinii si adresa porturilor atat pentru culoarea rosie, cat si pentru verde. Aceste leduri au fost organizate intr-o matrice de 3×3.

Pasii executati atunci cand se apasa un buton de miscare:

  • stingem ledul selectat anterior;
  • cautam prima pozitie libera conform directiei de miscare;
  • actualizam pozitia curenta cu cea gasita;
  • aprindem ledul nou selectat.

Pasii efectuati la apasarea butonului de selectie a led-ului:

  • aprindem ledul “permanent”;
  • actualizam tabla de joc cu valoarea jucatorului curent;
  • incrementam numarul de mutari efectuate de la inceputul jocului;
  • daca s-au efectuat mai mult de 5 mutari cautam sa vedem daca vreun jucator a realizat o linie;
  • daca s-a completat o linie cu o culoare, toata tabla se va aprinde cu culoarea respectiva;
  • schimbam jucatorul curent;
  • aprindem primul led liber de pe tabla ca pozitia de start la selectie.

Odata ce jocul se incheie, daca cineva a castigat tabla se aprinde in culoarea castigatorului. Daca nu a castigat nimeni atunci niciun led de pe tabla nu va fi aprins.

Se poate opta pentru inceperea unui nou jos prin apasarea butonului “SUS”.

Sursele proiectului sunt urmatoarele:

  • proiect.h
  • common.c
  • common.h

De asemenea in cadrul arhivei se gaseste si un fisier Makefile, care la rularea comenzii make va compila si va scrie fisierul rezultat pe microprocesor.

Rezultate Obţinute

Proiectul realizat este functional. Am adaugat mai jos o serie de poze cu acesta in diferite faze ale tablei de joc.

Placuta in stadiul final

Inceputul jocului

Ambii jucatori au ales

Jucatorul Rosu a castigat

Concluzii

  • Desi proiectul a fost unul simplu, am petrecut destul timp cu lipirea pieselor - deci sfatuiesc viitori studenti sa se apuce din timp de proiect :)
  • Din pacate eu am calculat gresit numarul de barete necesare si m-am chinuit ceva mai mult cu lipirea firelor dintre placuta de baza si joculetul meu.

Download

Am adaugat si urmatoarele resurse:

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite:

pm/prj2012/dtudose/4.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