Theodor TOMA (66833) - Joc de GO 9x9

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Mi-am propus in acest proiect sa realizez un joc de GO pe LCD. Am jucat acest joc de cand eram mic, am considerat ca este o oportunitate buna sa-mi creez propriul joc electronic. In general se joaca pe o tabla 19×19 dar, deoarece dimensiunea era prea mare pentru un LCD obisnuit, am ales o varianta mai usoara, de 9×9.

Deoarece jocul nu este foarte cunoscut, mai joi este un link cu regulile acestuia:

rules

Descriere generală

Vor exista 6 butoane: sus, jos, stanga, dreapta, pass si select. Acestea vor fi input-uri pentru ATMega 324 care va va afisa pe LCD evolutia jocului.

Hardware Design

Lista de piese:

  1. Placa de baza
  2. ATMega 324
  3. Rezistente
  4. Condensatoare
  5. LCD Nokia 5110
  6. 6 butoane
  7. Fire mama-mama
  8. Fire mama-tata

Majoritatea pieselor sunt luate de pe www.optimusdigital.ro

Schema electrica:

EDID: Am modificat putin schema initiala:

  1. Am legat componentele la pinii corespunzatori
  2. Am adaugat un buton
  3. Am eliminat buzzer-ul pentru ca nu l-am mai folosit

Software Design

Pentru scrierea programului am folosit Programmer's Notepad si WinAVR (ca la laborator).

Inainte de realizarea hardware-ului, am inceput sa scriu functionalitatile jocului, testand algoritmii pe Ubuntu. Functiile care tin de aceasta parte sunt: check_win, check_capture, check_free_spaces, check_valid_move, get_first_valid_move si init_game din fisierul main.c (detalii mai multe despre aceste functii sunt in cod). Ca algoritmi principali, am folosit metode de recunoastere a unui contur intr-o matrice (necesari la capturarea pieselor si la calcularea punctelor jucatorilor).

Dupa ce am terminat de lipit tot hardware-ul, am lucrat la modul de comunicare intre cele 3 componente: butoane, microcontroller si lcd. Deoarece am avut o problema cu butoanele, mai intai am facut afisarea jocului pe LCD. Pentru aceasta am cautat mai multe librarii, si am ales pana la urma pe cea de pe www.quantumtorque.com. Folosind functiile de aici, mi-am implementat propriile functii de afisare a jocului pe ecran: clear_pixel, set_pixel, init_helping_point, init_board, draw_board, put_stone, remove_stone, print_winner din fisierul Nokia5110.c (detalii mai multe despre aceste functii sunt in cod).

La final, cand mi-au mers in sfarsit butoanele, am completat si comportamentul jocului in functia main si am rezolvat bug-urile care au aparut pe parcurs.

Rezultate Obţinute

Rezultatul final este un joc de GO pe o tabla 9×9 care se poate juca in 2.

Imagini care reprezinta evolutia proiectului:

Concluzii

A fost un proiect foarte interesant de facut. Am intampinat destule dificultati pe parcurs (am pierdut 2 zile pentru ca nu-mi mergeau butoanele, dar de fapt nu era bine conectat pinul de ground la placuta..) dar in final am reusit sa realizez ce mi-am propus.

Download

Arhiva contine:

  1. fisierul sursa: main.c
  2. directorul Nokia5110 cu sursele Nokia5110.c, Nokia5110.h
  3. un fisier Makefile
  4. schema bloc si schema electrica

proiect_pm.zip

Jurnal

Bibliografie/Resurse

Resurse hardware:

  1. Datasheet LCD Nokia 5110 Nokia5110.pdf

Resurse software:

  1. Laboratoarele de PM.
  2. Biblioteca pentru LCD: 37
  • Documentația în format PDF
pm/prj2017/tvisan/joc-de-go.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