Emilia-Elena PALAGHIŢĂ (78278) - Connect4

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul presupune realizarea jocului Connect4 folosind un LCD grafic. Scopul acestuia este familiarizarea cu realizarea unui proiect care integrează atât partea hardware, cât și software. Jocul este implementat avand modurile singleplayer si multiplayer, cu posibilitatea de a alege culoarea preferata si dificultatea jocului.

Descriere generală

Hardware Design

Lista de componente:

Denumire Număr
Placa de bază PM 2018 1
Microcontroller ATmega 324 1
Modul LCD SPI ILI9163 1
LED 2
Buton 3
Buzzer 1

Software Design

Proiect a fost realizat in C++, deoarece am gasit biblioteca pentru LCD doar sub aceasta forma.

Continut surse:

  1. digitalpin - Folder ce contine DigitalPin.cpp
  2. ili9163 - Folder ce contine ii9163lcd.cpp, colors.h in care sunt definite culorile si font5x8.h
  3. spi - Folder ce contine spi.cpp
  4. main.cpp - sursa proiectului
  5. Makefile
  6. README

Biblioteca folosita pentru LCD a fost descarcata de aici: spi

Functii folosite din cadrul bibliotecii:

  • void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t colour);
  • void drawCircleFilled(int16_t xCentre, int16_t yCentre, int16_t radius, uint16_t colour);
  • void drawClear(uint16_t colour);
  • void setRotation(Rotation rotation);
  • void drawString(uint16_t x, uint16_t y, uint8_t size, uint16_t colour, uint16_t bg, const char *string);

Functii implementate in sursa principala:

  • bool isRightBtnPressed() - verifica daca butonul din dreapta a fost apasat
  • bool isLeftBtnPressed() - verifica daca butonul din stanga a fost apasat
  • bool isOkBtnPressed() - verifica daca butonul OK a fost apasat
  • void move_right() - muta discul la dreapta
  • void move_left() - muta discul la stanga
  • void PLAYNOTE(int duration, int frequency) - folosit de buzzer
  • bool game_won() - verifica daca jocul a fost castigat de jucatorul curent
  • bool game_draw() - verifica daca este egalitate
  • void port_init() - initiaza porturile pentru microcontroller
  • void draw_circles() - deseneaza discurile conform hartii
  • void draw_map() - deseneaza harta
  • void game_type_menu() - meniul pentru alegerea modului de joc: singleplayer sau multiplayer
  • void difficulty_menu() - meniul pentru dificultate: easy sau normal
  • void color_menu() - meniul pentru alegerea culorii: rosu sau galben
  • bool update_map(int col) - introduce un nou disc in harta
  • void move_tiles(int i, int j) - creeaza un efect dragut atunci cand este lansat un disc
  • void display_winner() - afiseaza castigatorul jocului
  • void play_singleplayer()
  • void play_multiplayer()

Rezultate Obţinute

Jocul presupune implementarea modurilor Singleplayer si Multiplayer, in fiecare din cadrul acestora putand fi aleasa culoarea dorita a jucatorului.

In cazul in care se alege modul multiplayer, player 1 va avea posibilitatea de a alege o culoare si automat player 2 va primi cea de-a doua culoare. Pe parcursul turei unui jucator, un LED de culoare rosie sau galbena se va aprinde pentru a evidentia care jucator este cel curent. La fiecare miscare de disc, buzzer-ul va scoate un sunet iar atunci cand un disc este lansat pe o coloana, se verifica daca aceasta este plina si daca nu se pozitioneaza in prima casuta disponibila apoi buzzer-ul iar va scoate un sunet.

In modul singleplayer jucatorul poate alege dificultatea jocului: easy sau normal. Modul de joc este acelasi ca cel de mai sus.

Concluzii

A fost un proiect din care am avut multe de invatat: cum se programeaza un microcontroller, cum se trateaza intreruperi pe butoane, cum se foloseste un buzzer sau cum se citeste un datasheet. La proiect am lucrat cu drag si consider ca efortul depus a meritat, rezultatul fiind un joc functional Connect4 cu mici imbunatatiri fata de cel clasic.

Download

Jurnal

  • 22 Aprilie - Crearea paginii si alegerea proiectului, realizarea schemei bloc si descrierea pe scurt a proiectului ales
  • 6 Mai - Realizarea schemei electrice
  • 23 Mai - Documentatia finala
  • 25 Mai - Prezentare proiect

Bibliografie/Resurse

  1. Datasheet microcontroller - doc8272.pdf
  2. Datasheet LCD ILI9163 - ILI9163.pdf
  3. Biblioteca LCD ILI9163 - spi
  • Documentația în format PDF
pm/prj2018/imatesica/emilia.palaghita.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