This is an old revision of the document!


Implementare joc Battleship - Leahu Morie Robert Andrei 331 CB

Introducere

Am decis sa fac implementarea jocului Battleship, folosind un microcontroller, o matrice cu LED-uri, m-am gândit sa folosesc un ecran LCD pentru scor, un timer pe care îl folosesc pentru a avea timeout la miscări si un buzzer pe care îl folosesc atunci cand câstigi/pierzi, eventual dupa fiecare miscare.

Afișajul se va împărți în două regiuni egale, una pentru fiecare jucător si se vor genera cel puțin două forme diferite de nave / vapoare pentru fiecare jucător, plasate aleator pe spațiul de joc.

Poziția de lovire va fi selectată de un jucător folosind 4 butoane pentru direcțiile stânga, dreapta, sus, jos sau un joystick. Confirmarea poziției se va realiza folosind un alt buton;

Odata ce un „vapor” a fost lovit și scufundat, led-urile aferente lui se vor aprinde într-o anumită culoare și vor rămâne aprinse pe toată durata jocului;

Pozițiile de pe matrice unde s-a încercat o lovire, însă ele au fost libere, vor rămâne aprinse pe toată durata jocului înt-o anumită culoare.

În momentul în care un jucător câștigă se va afișa un mesaj corespunzător, precum și scorul, iar buzzer-ul o sa inceapa sa cante. Buzzer-ul o să cânte și atunci când un jucător o să piardă. Dupa fiecare miscare am decis sa pun un timeout, pentru ca jucătorul să se gândească, folosind un timer.

Descriere Generala

SCHEMA_BLOC:

Hardware Design

Lista de piese:

  • Arduino UNO
  • 1 LCD cu I2C
  • Buzzer
  • rezistente
  • 10 fire
  • 2 LED-uri
  • buton MIC
  • modul adaptor micro SD
  • servomotor SG90
  • modul matrice LED MAX7219

Schema electrica:

Software Design

Pentru dezvoltare am folosit ArduinoIDE, si ca biblioteci am folosit:

  • Wire.h – pentru interfața serială I2C
  • LiquidCrystal_I2C.h – pentru modulul LCD
  • Keypad.h – pentru tastatură
  • LedControl.h – pentru matricea de LED-uri
  • Servo.h - pentru servomotor

Ca si implementare a programului:

  • setup() : generarea în mod aleator a celor două hărți, setarea poziției de

început, inițializarea modulelor (LCD, matricea de LED-uri)

void setup() { randomSeed(analogRead(0)); seeds the random number generator by a value obtained from doing AnalogRead on pin A0 myServo.attach(13); attaches the servo on pin 9 to the servo object lcd.backlight(); turn on backlight lcd.begin(); initialize the lcd lc.shutdown(0, false); turns the display on lc.setIntensity(0, 10); set the brightness lc.clearDisplay(0); clear the display Serial.begin(9600); initialize serial communication start position for attack xPos = 0; yPos = 7; display on LED matrix lc.setRow(0, 0, B10000000); setting the leds from the first row (index=0) first player - player 0 PLAYER = 0; lcd.clear(); lcd.setCursor(0, 0); lcd.print(“PLAYER #0”); displayScore(); delay(700); generate maps and backup maps generateMaps(); game is won when WON != -1 WON = -1; }

Rezultate Obtinute

Concluzii

Download

Jurnal

Bibliografie/Resurse

pm/prj2023/amocanu/implementare-joc-battleship/create-page.1684844603.txt.gz · Last modified: 2023/05/23 15:23 by robert_andrei.leahu
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