This is an old revision of the document!
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.
Lista de piese:
Schema electrica:
Pentru dezvoltare am folosit ArduinoIDE, si ca biblioteci am folosit:
Ca si implementare a programului:
î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;
}