4 In A Row

Introducere

4 In A Row este un joc de strategie in doi in care fiecare jucator alege o culoare si apoi cu randul pozitioneaza jetoane intr-o matrice cu 6 linii si 7 coloane. Piesele cad pe cea mai de jos pozitie a coloanei selectate. Fiecare dintre cei doi incercand sa fie primul care formeaza orizontal, vertical sau diagonal o linie de 4 jetoane.

Descriere generală

La inceputul partidei fiecare jucator va putea selecta o culoare care va fi dispusa pe unul din leduri cu ajutorul butoanelor. Ulterior fiecare jucator se va folosi de aceleasi butoane pentru a selecta unde va cadea piesa. Acesta va vizualiza selectarea pozitiei pe banda led deasupra celor 7 stripuri de banda led care reprezinta tabla de joc. Randul fiecarui jucator este semnalizat de ledurile cu ajutorul carora s-a realizat selectarea culorii de joc. In momentul in care unul dintre jucatori reuseste sa formeze o linie de 4, buzzer-ul va produce o melodie pentru invingator.

Schema Bloc

Hardware Design

Schema electrică

Banda LED

  • Banda LED cu 7 LED-uri
    • Utilizeaza 3 pini :
      • GND
      • VCC - conectat la 5V
      • 1 pin conectat la pinul 3 al plăcuței pentru accesare directa
  • Banda LED cu 6 * 7 LED-uri
    • Utilizeaza 3 pini :
      • GND
      • VCC - conectat la 5V
      • 1 pin conectat la pinul 2 al plăcuței pentru accesare directa

Led RGB Jucator 1

  • Utilizeaza 4 pini :
    • GND
    • 1 pin conectat la pinul 8 al plăcuței pentru a furniza culoarea rosu
    • 1 pin conectat la pinul 9 al plăcuței pentru a furniza culoarea verde
    • 1 pin conectat la pinul 10 al plăcuței pentru a furniza culoarea albastru

Led RGB Jucator 2

  • Utilizeaza 4 pini :
    • GND
    • 1 pin conectat la pinul 11 al plăcuței pentru a furniza culoarea rosu
    • 1 pin conectat la pinul 12 al plăcuței pentru a furniza culoarea verde
    • 1 pin conectat la pinul 13 al plăcuței pentru a furniza culoarea albastru

Butoane

  • Utilizeaza 2 pini:
    • conectat la 5V
    • 1 pin conectat la pinul analog A0

Buzzer

  • Utilizeaza 2 pini :
    • GND
    • 1 pin conectat la pinul 6 al plăcuței pentru a produce o melodie

Software Design

  • Mediu de dezvoltare folosit:
    • Tinkercad
    • Arduino IDE
  • Biblioteci
    • Adafruit_NeoPixel
  • Implementare
    1. setup()
      • se seteaza pinii de output
      • se inițializezaza benzile LED;
    2. checkWinner()
      • se realizeaza verificarea daca unul dintre cei doi jucatori a reusit sa formeze o structura de 4 jetoane pe orizontal, oblic sau diagonale
    3. colorCompare(struct Color color1, struct Color color2)
      • verifica daca doua culori sunt aceleasi
      • aceasta functie este utilizata pentru ca cei doi jucatori sa aiba culori distincte pentru a se diferentia
    4. clearP1()
      • opreste LED-ul jucatorului 1
    5. clearP2()
      • opreste LED-ul jucatorului 2
    6. setPlayer()
      • in cazul in care partida a fost castigata se reseteaza culorile jucatorilor
    7. setBoardMatrix()
      • se initializeaza corespunzator matricea care reprezinta tabla de joc
    8. setPlayerColor(int player_nr)
      • se alege cu ajutorul butoanelor culoarea pentru jucatorul player_nr
      • cu ajutorul pinului A0, a lui analogRead si a rezistentelor de valori diferite putem naviga printre culorile puse la dispozitia unui jucaotr
    9. loop()
      • se initializeaza tabla de joc
      • fiecare jucator alege o culoare
      • la fel ca la alegerea culorii ne folosim de butoane pentru a selecta unde va cadea jetonul
      • in cazul in care exista un castigator semnalizam portiunea de 4 jetoane care a dus la castigarea partidei si se porneste o melodie prntru castigator
      • se reseteaza datele pentru a putea incepe o noua partida

Rezultate Obţinute

Joc de entertainment: Video

Concluzii

Am implementat jocul 4 in a row cu ajutorul uei placute Arduino Uno si a componentelor de baza.

Download

Jurnal

  • 01.05.2022: Creare Wiki
  • 01.05.2022: Adaugare introducere, descriere generală, schema bloc, listă componente
  • 02.05.2022: Achizitionare Componente
  • 04.05.2022: Primire Componente
  • 05.05.2022: Verificare componente
  • 06.05.2022: Realizare cod Tinkercad
  • 08.05.2022 - 09.05.2022: Taierea benzii LED si lipirea acesteia
  • 10.05.2022: Conectarea tuturor componentelor la placa Arduino Uno
  • 11.05.2022: Modificarea codului, debug pentru o functionalitate corecta
  • 11.05.2022: Adaugare schema electrica, Software Design, Rezultate Obţinute, Concluzii
  • 26.05.2022: Adaugare sectiune download

Bibliografie/Resurse

pm/prj2022/ndrogeanu/4_in_a_row.txt · Last modified: 2022/05/29 14:50 by andrei.chirac
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