This is an old revision of the document!
Proiectul consta in implementarea clasicului joc X si 0 pe un LCD cu touchscreen. Jocul se poate juca atat intre 2 jucatori(pvp), cat si intre un utilizator si un AI, avand 3 dificultati: Easy, Medium si Impossible.
Jucatorii se pot folosi atat de butoane, cat si de touchscreen-ul de pe LCD pentru partea de input. Display-ul LCD-ului(SPI) este componenta principala si esentiala pentru partea de output, afisandu-se in mod fluent ecranul corespunzator momentului curent din cadrul jocului. Este folosit un buzzer pentru partea de sunet a jocului, aceasta fiind utila in anumite cazuri(ex: cand o partida ajunge la final, la o mutare incorecta).
Listă de piese:
Schemă electrică:
Mediul de dezvoltare: Arduino IDE
Biblioteci externe utilizate:
Pentru implementarea algoritmului folosit in cazul modului de joc cu bot-ul, dificultatea Impossible, m-am folosit de urmatoarea strategie de joc:
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:
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.
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.