Fabrizio-Ionuț CORUȚ (66877) - Connect 4

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Voi implementa cunoscutul joc de Connect 4. Jocul se desfasoara pe un board gaurit si gol pe interior pentru a permite introducerea unor jetoane de culori diferite : rosu si galben. Voi simula acest board cu ajutorul unei matrici de leduri in care voi avea doua culori : rosu si verde.

Regulile sunt simple - cel care ajunge sa isi dispuna culoarea neintrerupt cu ajutorul a 4 jetoane pe o linie, coloana sau diagonala castiga. Voi pune la dispozitie utilizatorilor 3 butoane : doua pentru miscarea pe matrice si unul pentru amplasarea jetonului corespunzator fiecarui utilizator. Jocul se va desfasura in randuri astfel ca dupa ce un utilizator amplaseaza un jeton va veni randul celuilalt. Timpul este nelimitat. Mai multe informatii : https://en.wikipedia.org/wiki/Connect_Four

Descriere generală

Schema Electrica

Conexiuni nu tocmai clean

Hardware Design

  • placa de baza + ATMega324
  • matrice bicolara 8×8 LED-uri cu anod comun
  • rezistori, conectori
  • 3 microintrerupatoare
  • rezistori
  • tranzistori NPN
  • placa auxiliara de test cu o singura fata
  • IC digital
  • sir pini mama
  • fire de la cablu Ethernet pentru conexiuni intre componente de pe placuta auxiliara
  • material termocontractor

Legarea BCD-ului si a butoanelor se face la PORTA al placutei, culorile becurilor sunt impartite intre PORTB si PORTC, astfel pentru PORTD ramanand comunicarea cu integratul.

Software Design

Codul de test a fost scris in C. Mediul de dezvoltare Xcode 8; compilat manual de avr-gcc.

Am folosit din biblioteca avr : io.h, interrupt.h si delay.h.

Un overview al amprentelor functiilor se gasesc in : utils.h

Implementarea codului este una foarte simplista : am mai multe functii pentru verificarea sfarsitului rundei (cate una pentru fiecare caz posibil), daca nu, modific matricea, care este una comuna si pentru oponent si pentru mine, in functie de al cui este randul. Se verifica apasarea butoanelor stanga sau dreapta, caz in care modificam doar indexul coloanei pe care ne aflam momentan.

In cazul in care butonul din mijloc este apasat (aferent plasarii unui jeton pe tabla) am adaptat o functie care plaseaza jetoul cu o linie mai jos pana intalneste o casuta deja completata, caz in care se opreste (Mai intai completez matricea, astept 100ms pentru afisare, apoi sterg valoarea si se trece la urmatoarea iteratie).

Rezultate Obţinute

Proiectul este functional din punct de vedere al conexiunilor dintre componentele de pe placute, software-ul nu are rezultatul dorit, se afiseaza doar culoarea rosie, in loc de alternarea intre rosu si verde intre tururile fiecarui jucator.

Concluzii

A fost o lucrare destul de challenging pentru mine, mai ales lipirea componentelor si frecventa ridicata a greselilor. (foarte migalos lucrul cu placuta auxiliara)

Download

Codurile sursa, pozele, etc : proiect_final_corut_fabrizio.zip

Jurnal

Milestone 1 : am ales tema proiectului
Milestone 2 : am terminat de lipit placuta si de gandit schema tehnica a proiectului
Milestone 3 : finalizarea lipirea placutei auxiliare
Milestone 4 : testare software

Bibliografie/Resurse

Majoritatea informatiilor legate de software sunt extrase din laboratoarele de P.M.

Matice de LED-uri : TBA23-11EGWA.html

BCD : cd4028b.pdf

Video proiect : LZbheoXeeh8

  • Documentația în format PDF
pm/prj2017/imatesica/connect4-fabi.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