Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:dbrigalda:tetris [2021/05/24 03:04]
andrei.stoian0307
pm:prj2021:dbrigalda:tetris [2021/05/29 16:59] (current)
andrei.stoian0307 [Download]
Line 1: Line 1:
 ====== Tetris ====== ====== Tetris ======
 +
 +===== Autor =====
 +<note tip>
 +**Autor:** [[https://​github.com/​cheez3d|Andrei Stoian]]
 +</​note>​
  
 ===== Introducere ===== ===== Introducere =====
Line 17: Line 22:
 | Accelerarea căderii peisei | Mișscare joystick în jos / Tasta S / Tasta săgeată jos | | Accelerarea căderii peisei | Mișscare joystick în jos / Tasta S / Tasta săgeată jos |
 | Rotirea piesei | Mișcare joystick în sus / Tasta W / Tasta săgeată sus | | Rotirea piesei | Mișcare joystick în sus / Tasta W / Tasta săgeată sus |
-TODO+| Aruncare jos a piesei | Apăsare joystick / Tasta Space | 
 +| Punere pe pauză | Apăsare buton de pauză / Tasta P | 
 +| Resetare | Apăsare buton de resetare | 
 +| Reglare luminozitate ecran | Rotire potențiometru de luminozitate | 
 +| Reglare volum buzzer | Rotire potențiometru de volum |
  
-===== Design ​Hardware ​=====+===== Design ​hardware ​=====
 Lista cu piesele utilizate în realizarea proiectului este următoarea:​ Lista cu piesele utilizate în realizarea proiectului este următoarea:​
   * Arduino Uno   * Arduino Uno
Line 34: Line 43:
 Schema de legare a componetelor este următoarea:​ Schema de legare a componetelor este următoarea:​
  
-{{:​pm:​prj2021:​dbrigalda:​tetris-schematicc.png?​direct&​1000|}}+{{:​pm:​prj2021:​dbrigalda:​tetris-schematic.png?​direct&​750|}}
  
 Mai jos este o poză cu toate componentele aranjate pe breadboard: Mai jos este o poză cu toate componentele aranjate pe breadboard:
Line 40: Line 49:
 {{:​pm:​prj2021:​dbrigalda:​tetris-components-arrangement.jpg?​direct&​300|}} {{:​pm:​prj2021:​dbrigalda:​tetris-components-arrangement.jpg?​direct&​300|}}
  
-===== Design ​Software ​===== +===== Design ​software ​===== 
-Bibliotecile ce vor fi utilizate sunt următoarele:+Codul sursă se găsește pe [[https://​github.com/​cheez3d/​acs-arduino-tetris|GitHub]].
  
 +Bibliotecile utilizate în cadrul realizării proiectului sunt următoarele:​
   * https://​github.com/​adafruit/​Adafruit-PCD8544-Nokia-5110-LCD-library   * https://​github.com/​adafruit/​Adafruit-PCD8544-Nokia-5110-LCD-library
   * https://​github.com/​adafruit/​Adafruit-GFX-Library   * https://​github.com/​adafruit/​Adafruit-GFX-Library
 +  * https://​github.com/​JChristensen/​movingAvg
 +  * https://​github.com/​PaulStoffregen/​PS2Keyboard
  
-===== Rezultate Obţinute ===== +Descriere de nivel înalt:
-<note tip> +
-TODO+
  
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +Ceasul jocului are o frecvență de 50Hz (50 de actualizări/​cadre pe secundă). Acest ceas este derivat din Timer1 de pe chipul Atmel ATmega 328P care generează o întrerupere de timer la frecvența de 200Hz, deci odată la 4 întreruperi de timer va fi executată bucla jocului. Frecvența de 200Hz a fost aleasă pentru a convertorul ADC, întrucât citirea valorilor generate de convertorul ADC sunt executate odată cu întreruperea de timer de pe Timer1. ADC-ul citește 4 valori: luminozitatea ecranului LCD, volumul buzzer-ului și cele 2 axe ale joystick-ului.
-</​note>​+
  
-===== Concluzii ===== +Grid-ul jocului este memorat într-un array bidimensional în care o valoare de 0 înseamnă că pe poziția asociată nu se află un bloc iar o valoare de 1 înseamnă că pe poziția asociată se află un bloc. Toate datele despre tetromino-uri (rotații, wallkick-uri etc.) sunt stocate în memoria flash și transferate în RAM când este nevoie de acestea.
-TODO+
  
 +Mediul de dezvoltare a fost [[https://​code.visualstudio.com/​updates/​v1_55|Visual Studio Code 1.55.2]] cu [[https://​marketplace.visualstudio.com/​items?​itemName=vsciot-vscode.vscode-arduino|extensia pentru Arduino]].
 +
 +===== Rezultate obţinute =====
 +Videoclip demonstrativ:​
 +
 +[[https://​www.youtube.com/​watch?​v=e2ZMBsfVYT4|{{:​pm:​prj2021:​dbrigalda:​tetris-demo-thumbnail.png?​nolink&​600|}}]]
 +
 +Timestamp-uri (se găsesc și în descrierea videoclipului):​
 +  * Joystick gameplay - [[https://​www.youtube.com/​watch?​v=e2ZMBsfVYT4&​t=5|0:​05]]
 +  * Keyboard gameplay - [[https://​www.youtube.com/​watch?​v=e2ZMBsfVYT4&​t=178|2:​58]]
 +  * Extra stuff - [[https://​www.youtube.com/​watch?​v=e2ZMBsfVYT4&​t=312|5:​12]]
 +
 +===== Concluzii =====
 +În urma realizării proiectului am descoperit lucruri pe care nu le știam despre [[https://​tetris.wiki/​Super_Rotation_System|mecanicile jocului Tetris]].
 ===== Download ===== ===== Download =====
-<note warning> +  * [[https://​github.com/​cheez3d/​acs-arduino-tetris/​archive/​refs/​heads/​master.zip|Cod sursă]] ([[https://​github.com/​cheez3d/​acs-arduino-tetris|repository]]) 
-TODO+  * {{:​pm:​prj2021:​dbrigalda:​tetris-resources.zip|Resurse (bitmap-uri,​ poze etc.)}}
  
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). 
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. 
-</​note>​ 
 ===== Jurnal ===== ===== Jurnal =====
 <​note>​ <​note>​
   * 25.04.2021 - am creat pagina de wiki   * 25.04.2021 - am creat pagina de wiki
 +  * 25.04.2021 - am creat draft-ul inițial al proiectului pe pagina de wiki
 +  * 29.04.2021 - am legat componentele pe breadboard
 +  * 01.05.2021 - am început scrierea codului într-un singur fișier sursă
 +  * 06.05.2021 - am spart codul sursă în fișiere separate pentru o organizare mai bună
 +  * 09.05.2021 - am terminat scrierea codului sursă pentru interacțiunea cu perifericele
 +  * 14.05.2021 - am implementat grid-ul de joc
 +  * 16.05.2021 - am conceput un sistem de memorare a proprietăților tetromino-urilor
 +  * 22.05.2021 - am terminat implementarea logicii jocului
 +  * 24.05.2021 - am realizat videoclipul demonstrativ al proiectului
 </​note>​ </​note>​
 +
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
 +  * https://​ocw.cs.pub.ro/​courses/​_media/​pm/​lab/​uno.jpg
   * https://​create.arduino.cc/​projecthub/​muhammad-aqib/​interfacing-nokia-5110-lcd-with-arduino-7bfcdd   * https://​create.arduino.cc/​projecthub/​muhammad-aqib/​interfacing-nokia-5110-lcd-with-arduino-7bfcdd
   * https://​learn.adafruit.com/​nokia-5110-3310-monochrome-lcd/​testing   * https://​learn.adafruit.com/​nokia-5110-3310-monochrome-lcd/​testing
   * https://​learn.adafruit.com/​adafruit-gfx-graphics-library   * https://​learn.adafruit.com/​adafruit-gfx-graphics-library
 +  * https://​www.nongnu.org/​avr-libc/​user-manual/​pgmspace.html
   * http://​javl.github.io/​image2cpp/​   * http://​javl.github.io/​image2cpp/​
 +  * https://​en.wikipedia.org/​wiki/​Tetromino
 +  * https://​harddrop.com/​wiki/​Tetris_Guideline
 +  * https://​harddrop.com/​wiki/​Spawn_Location
 +  * https://​tetris.fandom.com/​wiki/​SRS
 +  * https://​gamedevelopment.tutsplus.com/​tutorials/​implementing-tetris-collision-detection--gamedev-852
   * [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​dbrigalda/​tetris?​do=export_pdf|Export PDF]]   * [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​dbrigalda/​tetris?​do=export_pdf|Export PDF]]
  
pm/prj2021/dbrigalda/tetris.1621814641.txt.gz · Last modified: 2021/05/24 03:04 by andrei.stoian0307
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