This shows you the differences between two versions of the page.
pm:prj2021:agrigore:connect4 [2021/05/27 15:04] mihaela.nuta1207 |
pm:prj2021:agrigore:connect4 [2021/06/03 14:38] (current) mihaela.nuta1207 |
||
---|---|---|---|
Line 82: | Line 82: | ||
|GND |GND | | |GND |GND | | ||
|VCC |5V | | |VCC |5V | | ||
+ | |||
+ | |||
+ | ===== Software Design ===== | ||
+ | * mediu de dezvoltare - **Arduino Ide** | ||
+ | * librării şi surse 3rd-party | ||
+ | * **PinChangeInt.h** - librărie cu funcționalități de attach și detach pentru întreruperi | ||
+ | * **TFT.h** - librărie Arduino pentru ecran tft | ||
+ | * **SPI.h** - librărie Arduino pentru comunicare SPI având ca master plăcuța Arduino | ||
+ | * Un exemplu Arduino built-in: [[https://www.arduino.cc/en/Tutorial/BuiltInExamples/toneMelody]] | ||
==== Diagrama stărilor ==== | ==== Diagrama stărilor ==== | ||
Line 90: | Line 99: | ||
* **REPLAY SCREEN**: dupa câteva secunde, pe ecran apare: **PRESS GREEN TO PLAY**. După ce se apasă pe butonul verde, jocul repornește, iar starea va deveni starea inițială, adică **BEGIN** | * **REPLAY SCREEN**: dupa câteva secunde, pe ecran apare: **PRESS GREEN TO PLAY**. După ce se apasă pe butonul verde, jocul repornește, iar starea va deveni starea inițială, adică **BEGIN** | ||
- | + | ==== Implementare ==== | |
- | ===== Software Design ===== | + | * Pe baza butoanelor, jocul poate fi urmărit ca un automat de stări. |
- | * mediu de dezvoltare - **Arduino Ide** | + | * În loop se pot observa aceste stări: GAME_INIT, GAME_BEGINS, GAME_STARTED, cât și alte variabile de stare: player_switched (care imi spune dacă un player și-a realizat tura, eu ar trebui să afișez pe ecran ceea ce el a făcut, iar următorul jucător poate continua) |
- | * librării şi surse 3rd-party | + | * Am ales să folosesc destul de multe variabile de stări, înafară de acestea, deoarece am dorit să nu desenez la fiecare apel de loop încontinuu aceleași forme care oricum erau desenate. |
- | * **PinChangeInt.h** - librărie cu funcționalități de attach și detach pentru întreruperi | + | * În funcție de starea jocului, în anumite situații, am ales să redesenez ceea ce voiam să șterg cu culoarea background-ului, deoarece era mai costisitor să dau clear la ecran, după care să redesenez totul (în primul rând ar fi trebui să țin minte ce am desenat și în al 2-lea rând ecranul ar fi făcut un flicker constant, ceea ce ar fi fost urât). |
- | * **TFT.h** - librărie Arduino pentru ecran tft | + | * Se poate observa că în cod sunt foarte multe define-uri, deoarece am vrut să economisesc cât mai multă memorie, define-urile fiind folosite doar in etapa de preprocesare |
- | * **SPI.h** - librărie Arduino pentru comunicare SPI având ca master plăcuța Arduino | + | |
- | * algoritmi şi structuri | + | |
- | * surse şi funcţii implementate | + | |
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | * {{:pm:prj2021:agrigore:1.jpeg?400|}} | ||
+ | * {{:pm:prj2021:agrigore:2.jpeg?400|}} | ||
+ | * {{:pm:prj2021:agrigore:3.jpeg?400|}} | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | * Jocul este unul practic, realizat destul de low-cost. Am reușit să realizez tot ce mi-am propus, ba chiar am adăugat și lucruri în plus (la nivel de efect/software) | ||
+ | * Dacă nu ai jocuri, îți faci LOL | ||
===== Download ===== | ===== Download ===== | ||
+ | {{:pm:prj2021:agrigore:nuta_mihaela_madalina_334cb_connect4.zip|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
* 26 aprilie - creare pagină pe ocw | * 26 aprilie - creare pagină pe ocw | ||
Line 139: | Line 149: | ||
* documentație librărie tft.h: [[https://www.arduino.cc/en/Reference/TFTLibrary]] | * documentație librărie tft.h: [[https://www.arduino.cc/en/Reference/TFTLibrary]] | ||
* librăria PinChangeInt: [[https://code.google.com/archive/p/arduino-pinchangeint/downloads]] | * librăria PinChangeInt: [[https://code.google.com/archive/p/arduino-pinchangeint/downloads]] | ||
+ | * sunete: [[https://www.arduino.cc/en/Tutorial/BuiltInExamples/toneMelody]] | ||
+ | * PDF pagina wiki: [[https://ocw.cs.pub.ro/courses/pm/prj2021/agrigore/connect4?do=export_pdf|Connect4]] | ||