This shows you the differences between two versions of the page.
pm:prj2021:avaduva:nim [2021/05/26 14:54] stefan.popovici |
pm:prj2021:avaduva:nim [2021/05/26 15:32] (current) stefan.popovici |
||
---|---|---|---|
Line 13: | Line 13: | ||
==== Schema bloc ==== | ==== Schema bloc ==== | ||
- | {{:pm:prj2021:avaduva:nim_block_diagram.png|}} | + | {{:pm:prj2021:avaduva:nim_block_diagram.jpg|}} |
====== Hardware Design ====== | ====== Hardware Design ====== | ||
Line 28: | Line 28: | ||
==Schema circuitului== | ==Schema circuitului== | ||
- | {{:pm:prj2021:avaduva:Nim_Tinkercad.png?700|}} | + | {{:pm:prj2021:avaduva:Nim_Tinkercad.jpg?700|}} |
====== Software Design ====== | ====== Software Design ====== | ||
+ | Am folosit Arduino IDE 1.8.15 pentru dezvoltare. Am inclus biblioteca LiquidCrystal.h pentru a configura LCD-ul si pentru a afisa informatiile corespunzator. | ||
+ | |||
+ | In ceea ce priveste implementarea, jocul incepe cu selectarea modului dorit. Se poate alege modul single player folosind butonul din stanga sau modul multiplayer folosind butonul central. Se va afisa un mesaj corespunzator, apoi se afiseaza numarul de obiecte din fiecare gramada, iar jucatorii incep sa isi efectueze mutarile pe rand. Jucatorul care face prima mutare este ales aleatoriu. In cazul computerului, acesta are implementata o strategie optima de joc, bazata pe teoria numerelor. Astfel, va incerca mereu ca, dupa mutarea sa, numarul de obiecte ramase in cele 3 gramezi sa aiba propritatea de suma-nim nula (ceea ce presupune ca valoarea obtinuta prin aplicarea operatiei binare xor pe cele 3 valori sa fie 0). Daca acest lucru nu este posibil, atunci obtinerea unei victorii depinde de o potentiala greseala a adversarului, iar computerul va alege sa faca o mutare aleatoare. Mai multe detalii despre strategia de joc optima se gasesc [[https://en.wikipedia.org/wiki/Nim|aici]]. Finalul jocului este semnalat cu ajutorul buzzerului si printr-un mesaj corespunzator. | ||
+ | |||
+ | ====== Rezultate Obtinute ====== | ||
+ | {{:pm:prj2021:avaduva:nim0.jpeg?700|}} | ||
+ | {{:pm:prj2021:avaduva:nim2.jpeg?700|}} | ||
+ | {{:pm:prj2021:avaduva:nim5.jpeg?700|}} | ||
+ | {{:pm:prj2021:avaduva:nim6.jpeg?700|}} | ||
+ | {{:pm:prj2021:avaduva:nim4.jpeg?700|}} | ||
====== Concluzii ====== | ====== Concluzii ====== | ||
====== Download ====== | ====== Download ====== | ||
+ | Cod + prezentare video: {{:pm:prj2021:avaduva:Nim.zip|}} | ||
====== Jurnal ====== | ====== Jurnal ====== | ||
* descriere + schema bloc: 30 aprilie 2021 | * descriere + schema bloc: 30 aprilie 2021 | ||
+ | * hardware design, software design, rezultate, video, completare resurse + update descriere: 26 mai 2021 | ||
====== Bibliografie/Resurse ====== | ====== Bibliografie/Resurse ====== | ||
https://en.wikipedia.org/wiki/Nim\\ | https://en.wikipedia.org/wiki/Nim\\ | ||
https://www.arduino.cc/en/Tutorial/LibraryExamples/LiquidCrystalDisplay\\ | https://www.arduino.cc/en/Tutorial/LibraryExamples/LiquidCrystalDisplay\\ | ||
+ | https://store.arduino.cc/genuino-starter-kit\\ | ||
[[https://ocw.cs.pub.ro/courses/pm/prj2021/avaduva/nim?do=export_pdf | Export to PDF]] | [[https://ocw.cs.pub.ro/courses/pm/prj2021/avaduva/nim?do=export_pdf | Export to PDF]] | ||