Maria-Cristina CONSTANTIN (78308) - Connect Four

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul constă în realizarea unui joc de tipul Connect Four pe un LCD.

Connect Four este un joc implementat pentru doi jucători într-o matrice cu 6 linii și 7 coloane. Inițial jucătorii își aleg culoarea pieselor, urmând ca apoi sa pună de sus, pe rând, discuri colorate într-o coloană. Piesele cad, ocupând următorul spațiu disponibil în coloană. Scopul jocului este acela de a obține 4 piese consecutive de culoarea cu care joci, pe linie, coloană sau diagonală, câștigând astfel runda.

În cadrul realizării proiectului sunt urmărite următoarele obiective:

  • implementare clasică a jocului Connect Four;
  • implementarea unui algoritm pentru o funcționare fluentă;
  • realizarea unui bot pentru câștigarea jocului.

Prin realizarea acestui proiect este foarte ușor de înțeles modul de funcționare al unui ecran LCD, în special dacă se implementează acel algoritm de fluidizare al imaginilor ce descriu în fiecare moment starea jocului. De asemenea, prin crearea unui bot se pot găsi și testa numeroase strategii de câștigare a jocului.

Descriere generală

Diagrama

Mod de functionare

Jucătorul va putea realiza următoarele acțiuni:

  • va putea insera un disc în tabla de joc prin apăsarea butonului pentru inserare disc;
  • va putea deplasa un disc la stânga înainte de a-l insera prin apăsarea butonului pentru deplasare stânga;
  • va putea deplasa un disc la dreapta înainte de a-l insera prin apăsarea butonului pentru deplasare dreapta;
  • va putea face switch player prin apăsarea butonului de switch.

Pe LCD-ul grafic vor fi afișate atât tabla de joc (matricea de joc) cât și cei doi jucători și jetoanele de culori diferite aferente fiecărui jucător.

Hardware Design

Lista piese:

  • placuță ATmega324
  • 128×64 Graphical LCD Interface Board;
  • 4 butoane (push button);
  • 2 diode 1N4148
  • 1 diodă Zener de 3V3
  • 1 condensator de 10µF
  • 1 rezistenta de 100 Ohmi
  • 3 rezistente de 10K
  • regulator de tensiune
  • fire de legatura mama-tata
  • fire de lagatura tata-tata

Schema electrica:

Software Design

Pentru dezvoltarea software-ului, am folosit urmatoarele:

  • Atmel Studio 7.0 - pentru a obtine fisierul .hex si pentru a edita fisierele sursa;
  • HIDBootFlash - pentru a incarca hex-ul pe microcontroller.

Librariile si sursele 3rd-party folosite de mine sunt urmatoarele:

  • Biblioteca pentru LCD Nokia 3310

Sursele din cadrul proiectului sunt urmatoarele:

  • lcd.h;
  • lcd.c;
  • main.c.

In ceea ce priveste functiile implementate, biblioteca LCD-ului, este o combinatie din mai multe biblioteci, unde vom gasi urmatoarele functii:

  • lcd_init
  • lcd_contrast
  • lcd_clear
  • lcd_clear_area
  • lcd_clear_line
  • lcd_goto_xy
  • lcd_goto_xy_exact
  • lcd_chr
  • lcd_str

Jocul l-am implementat in cadrul fisierului sursa main.c, unde am creat functii ajutatoare precum:

  • my_lcd_clear
  • setpixel
  • init_buttons
  • draw_game_space
  • draw_white_token
  • draw_black_token
  • move_token
  • game_over
  • draw_score
  • draw_winner
  • placement_token
  • menu

Toate aceste functii au fost create pentru a putea reprezenta meniul de start, zona de joc si cei doi jucatori, precum si miscarea celor doi pe tabla de joc, tinerea scorului si afisarea castigatorului.

Initial, se poate alege daca se joaca o singura runda sau mai multe, urmand ca apoi sa apara zona de joc si scorul celor doi jucatori in partea stanga a tablei de joc. Cu ajutorul butoanelor (left, right, drop), atunci cand incepe runda, cei doi jucatori isi pot plasa discurile in careu in pozitia dorita de acestia, urmarind sa formeze o linie, coloana sau diagonala de 4 piese proprii consecutive. Primul care reuseste acest lucru este castigator, iar scorul se modifica corespunzator rundelor castigate.

Cablaj:

Rezultate Obţinute

Concluzii

Proiectul a fost unul interesant, care m-a scos din zona de confort. In final am obtinut un joc functional, care poate fi jucat de doua persoane si in mai multe runde. Ma bucur ca am invatat sa lipesc componente pe o placuta de baza si sa utilizez un microcontroller.

Download

Jurnal

  • 22 aprilie - Realizarea paginii aferente proiectului + realizarea descrierii generale, a diagramei și lista de piese necesare.
  • 6 mai - Realizarea schemei electrice.
  • 10 mai - Realizare cablaj.
  • 17 mai - Realizare functionalitati de baza joc (afisare matrice de joc, afisare jucatori, afisare scor).
  • 21 - 23 mai - Realizare functionalitati avansate joc (selectare runde de joc, miscarea jucatorilor pe matricea de joc).
  • 23 mai - Finalizare pagina wiki.

Bibliografie/Resurse

pm/prj2018/dghilinta/cristinaconstantin.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