Differences

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

Link to this comparison view

pm:prj2022:agmocanu:tic_tac_toe [2022/05/27 18:57]
cconstantinescu1401 [Hardware Design]
pm:prj2022:agmocanu:tic_tac_toe [2022/05/28 03:27] (current)
cconstantinescu1401 [Bibliografie/Resurse]
Line 16: Line 16:
   * Arduino MEGA 2560   * Arduino MEGA 2560
   * LCD cu touchscreen(SPI) - ILI9341, XPT2046   * LCD cu touchscreen(SPI) - ILI9341, XPT2046
-  * Translator de nivel bidirectional cu 8 canale+  * Translator de nivel bidirectional cu 8 canale ​(folosit pentru conectarea LCD-ului)
   * 10 Butoane   * 10 Butoane
   * 1 Buzzer   * 1 Buzzer
Line 31: Line 31:
 ===== Software Design ===== ===== Software Design =====
  
 +Mediul de dezvoltare: Arduino IDE
  
-<note tip> +Biblioteci externe utilizate
-Descrierea codului aplicaţiei (firmware)+  * Ucglib.h : pentru LCD 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +  * XPT2046.h : pentru touchscreen
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
 +Pentru implementarea algoritmului folosit in cazul modului de joc cu bot-ul, dificultatea Impossible, m-am folosit de urmatoarea strategie de joc:
 +  * Daca bot-ul poate castiga intr-o mutare, mutarea castigatoare va fi facuta;
 +  * Daca adversarul poate castiga intr-o mutare, bot-ul va bloca, alegand campul respectiv;
 +  * Se va crea un scenariu in care bot-ul sa aibe 2 variante de a castiga, daca acest lucru este posibil;
 +  * Daca jucatorul ar putea, la urmatoarea mutare, un scenariu care-i va oferi doua variante de a castiga, bot-ul va incerca sa il opreasca;
 +  * Daca campul din mijloc este liber, bot-ul va alege acest camp pentru a muta;
 +  * Daca un colt opus unui simbol al adversarului este liber, botul va alege acel colt;
 +  * Se va alege orice colt liber, daca acesta exista;
 +  * Se va alege orice camp liber ramas.
 +Astfel, folosind aceasta strategie, bot-ul nu va putea fi invins in niciun scenariu.
 +
 +Pentru dificultatea Medium, bot-ul va incerca mai intai sa castige, daca acest lucru este posibil, iar altfel, daca adversarul poate castiga intr-o mutare, acesta va fi blocat. Daca niciunul dintre aceste 2 scenarii nu apare, se va face o mutare random.
 +
 +Dificultatea Easy consta doar in mutari random.
 +
 +Sunt implementate mai multe ecrane, oferindu-le jucatorilor mai multa libertate de alegere:
 +  * initial, jucatorii vor alege modul de joc
 +  * apoi, in cazul in care se alege un mod de joc contra '​AI'​-ului,​ un singur jucator va putea juca, astfel ca acesta isi va putea alege culoarea(Rosu/​Albastru)
 +  * La finalul unui joc, jucatorii pot alege daca sa continue sa joace in acest mod de joc, pastrandu-se scorul, sau sa se intoarca in meniul de start.
 +
 +In cazul jucarii mai multor runde, simbolurile asociate bot-ului, respectiv jucatorilor,​ vor alterna, oferind sanse egale, insa culorile se vor mentine.
 + 
 +De mentionat este si faptul ca am folosit intreruperi PCINT pentru 5 butoane si intreruperi INT pentru celelalte 5, folosind doar anumite flaguri pentru a implementa si varianta utilizarii butoanelor in loc de utilizarea touchscreen-ului.
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 +{{:​pm:​prj2022:​agmocanu:​constantinescu_ciprian_rez_obt_1.jpeg?​600|}}
 +{{:​pm:​prj2022:​agmocanu:​constantinescu_ciprian_rez_obt_2.jpeg?​600|}}
 +{{:​pm:​prj2022:​agmocanu:​constantinescu_ciprian_rez_obt_3.jpeg?​600|}}
 +{{:​pm:​prj2022:​agmocanu:​constantinescu_ciprian_rez_obt_4.jpeg?​600|}}
 +{{:​pm:​prj2022:​agmocanu:​constantinescu_ciprian_rez_obt_5.jpeg?​600|}}
 +{{:​pm:​prj2022:​agmocanu:​constantinescu_ciprian_rez_obt_6.jpeg?​600|}}
  
-<note tip> 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. 
-</​note>​ 
  
 ===== Concluzii ===== ===== Concluzii =====
  
 +Realizarea proiectului a fost utila pentru familiarizarea cu Arduino IDE si realizarea acestui tip de circuite, folosirea eficienta a unor biblioteci externe si intelegerea mai profunda a subiectelor abordate la laborator precum utilizarea intreruperilor,​ comunicarea folosind SPI si lucrul cu registre.
 +
 +De asemenea, confruntandu-ma cu probleme aparute pe parcurs precum faptul ca dimensiunea alocata pentru program space pentru un Arduino Uno R3 este insuficienta pentru proiectul ales(fiind necesara inlocuirea acestuia cu un Arduino MEGA) sau cele cauzate de rolul specific al anumitor pini de pe placuta m-au ajutat sa invat cum sa abordez cat mai corect astfel de proiecte.
 ===== Download ===== ===== Download =====
  
-<note warning>​ +{{:pm:​prj2022:​agmocanu:​constantinescu_ciprian_tic-tac-toe.zip|}}
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurse, 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 ​=====+===== Bibliografie/​Resurse ​===== 
 +[1] https://​www.optimusdigital.ro/​ro/​optoelectronice-lcd-uri/​3544-modul-lcd-spi-de-28-cu-touchscreen-controller-ili9341-i-xpt2046-240x320-px.html?​search_query=lcd&​results=198
  
-<note tip> +[2] https://​github.com/​olikraus/ucglib
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. +
-</note>+
  
-===== Bibliografie/Resurse =====+[3] https://​github.com/​spapadim/​XPT2046 
 + 
 +[4] https://​www.cs.ou.edu/​~fagg/​classes/​general/​atmel/​ArduinoMega.pdf 
 + 
 +[5] https://​en.wikipedia.org/​wiki/​Tic-tac-toe
  
-<​note>​ 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. 
-</​note>​ 
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2022/agmocanu/tic_tac_toe.1653667047.txt.gz · Last modified: 2022/05/27 18:57 by cconstantinescu1401
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