Cristian-Mihai DIMA - Tic-Tac-Toe

Autorul poate fi contactat la adresa: cristian_mihai.dima@stud.acs.upb.ro

Introducere

Proiectul reprezinta unui joc de X si 0 pe un LCD de Nokia 3310.

Jocul va avea functii de singleplayer (doua nivele de dificultate - vs CPU) sau multiplayer (P1 vs P2).

Am pornit de la ideea ca un astfel de microcontroller ar fi potrivit pentru o consola portabila de jocuri (vezi Nintendo Game Boy) si un punct bun de inceput este un joc clasic precum X si 0 care poate fi jucat atat contra “calculatorului” (singleplayer) cat si contra unui coleg (multiplayer), nu doar singur ca in cazul Snake.

Utilitate: te joci in timpul liber (sau la cursuri :-P).

Descriere generală

Jucatorul se va putea deplasa pe tabla de X si 0 cu 4 butoane (sageti). Alte doua butoane vor putea fi folosite pentru select (A) sau back (B).

Mod de functionare:

Jucatorul va selecta una din 3 variante de joc:

  • vs CPU Easy
  • vs CPU Hard
  • P1 vs P2

Apoi pe display va fi afisata o tablita de X si 0. Jucatorul se poate plimba pe casutele libere si la apasarea butonului A va plasa un X (sau 0 in cazul P2) in acea casuta. La sfarsitul jocului va fi afisat un mesaj (P1 Win/P2 Win/CPU Win/Draw) si te intorci la meniul principal la apasarea butonului A sau B. Un joc poate fi oprit cu butonul B, dar trebuie confirmat (vezi poze).

Hardware Design

Lista piese (pe langa microcontroller si placa):

  • Display LCD de Nokia 3310/5510 (Philips PCD8544)
  • 6 butoane (Sageti + A/B)
  • Stabilizator tensiune 5V → 3.3V (pentru display)
  • Rezistente pull-up de 10K pentru fiecare buton
  • Rezistenta de 100 Ohmi pentru backlightul LCD-ului
  • Fire (tata-tata, tata-mama)

Schema electrica:

Pinul 6 (OSC) nu exista de fapt pe PCD8544, iar pinul 8 (VOUT) este folosit pentru backlightul displayul, dar nu am nevoie de asa ceva.

Implementarea hardware difera putin de schema, primii pini de pe LCD (RST, CE, DC, DIN si CLK) fiind conectati la primii 5 pini de la PORT B (nu conteaza ordinea).

Software Design

Am folosit urmatoarele programe:

  • Sublime Text - editare surse
  • Programmer's Notepad - compilat
  • HIDBootFlash - urcat .hex pe microcontroller

Am folosit urmatorele surse 3rd-party:

  • Biblioteca pentru scris pe LCD
  • Debouncer pentru pana la 8 butoane

Linkurile pentru toate sunt la Bibliografie/Resurse

Rezultate Obţinute

Botul EASY este usor de batut, acesta punand intr-o celula aleatoare.

Botul HARD poate fi invins (foarte greu), dar de cele mai multe ori se ajunge la o remiza.

Pentru partea de multiplayer exista si un sidebar pe dreapta unde se poate vedea jucatorul care trebuie sa faca o miscare.

Pozele nu se vad foarte bine pe elf, deci am urcat si o arhiva cu orginalele (vezi mai jos) :-)

Cablaj:

cmd_cablaj_tot.jpg

Splash Screen (ca orice joc care se respecta):

cmd_splash.jpg

Meniu:

cmd_menu.jpg

Tabla de joc (in dreapta e selectat jucatorul care urmeaza sa mute):

cmd_p1.jpg cmd_p2.jpg

Sfarsit de joc (4 variante):

Exit screen (pentru cand botul HARD te bate prea rau):

Concluzii

Am implementat tot ce mi-am propus, jocul poate fi jucat atat in doi, cat si vs CPU. Am adaugat si backlightul LCD-ului pentru ca arata mai bine asa :-)

Download

Sursele, README-ul si .hex-ul: dima_cristian-pm_17.rar (ics-si-zero)

Pozele: cristi_dima_poze_pm.zip

Bibliografie/Resurse

Documentația în format PDF

pm/prj2017/cdobromir/ics-si-zero.txt · Last modified: 2021/04/14 17:07 (external edit)
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