This shows you the differences between two versions of the page.
pm:prj2023:amocanu:implementare-joc-battleship:create-page [2023/05/24 20:43] robert_andrei.leahu |
pm:prj2023:amocanu:implementare-joc-battleship:create-page [2023/05/30 10:31] (current) robert_andrei.leahu |
||
---|---|---|---|
Line 2: | Line 2: | ||
=====Introducere===== | =====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. | + | 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 servomotor care indica ce player ataca 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. | 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; | + | 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; | + | 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. | + | 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(rosu). |
- | Î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. | + | Î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. |
=====Descriere Generala===== | =====Descriere Generala===== | ||
Line 38: | Line 38: | ||
{{:pm:prj2023:amocanu:implementare-joc-battleship:schema_electrica-1.png?755|}} | {{:pm:prj2023:amocanu:implementare-joc-battleship:schema_electrica-1.png?755|}} | ||
+ | |||
+ | **Completarea schemei electrice:** | ||
+ | |||
+ | {{:pm:prj2023:amocanu:implementare-joc-battleship:schema_electrica2.2.png?755|}} | ||
=====Software Design===== | =====Software Design===== | ||
Line 56: | Line 60: | ||
void setup() { | void setup() { | ||
+ | const int buzzer = 9; //buzzer to arduino pin 9 | ||
randomSeed(analogRead(0)); // seeds the random number generator by a value obtained from doing AnalogRead on pin A0 | 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 | myServo.attach(13); // attaches the servo on pin 9 to the servo object | ||
lcd.backlight(); // turn on backlight | lcd.backlight(); // turn on backlight | ||
- | lcd.begin(); // initialize the lcd | + | //lcd.init(); |
+ | lcd.begin(); // initialize the lcd | ||
lc.shutdown(0, false); // turns the display on | lc.shutdown(0, false); // turns the display on | ||
Line 152: | Line 158: | ||
</code> | </code> | ||
+ | * am setat ca palyer-ul sa se poata misca de pe butoanele 2,6,8,4(sus,dreapta,jos,stanga) | ||
+ | * de pe butonul 5 de pe keypad sa atace, iar de pe butoanele 1 si 3 sa arate unde sunt pozitionate navele | ||
+ | player-ului 0, respectiv 1 | ||
+ | * de pe butonul 9 am setat sa intre in CHEAT MODE 8-O :!: 8-), adica pentru player-ul 1 nava player-ului 0 o sa se afle pe poz | ||
+ | A[7][0], iar acesta daca o doboara o sa fie WIN | ||
+ | * pentru player-ul 0 am setat dupa CHEAT MODE, ca matricea sa fie full de nave astfel incat orice loveste sa fie HIT | ||
+ | * la fiecare MISS, buzzer-ul incepe sa sune, iar la WIN acesta o sa sune de 3 ori | ||
=====Rezultate Obtinute===== | =====Rezultate Obtinute===== | ||
+ | {{:pm:prj2023:amocanu:implementare-joc-battleship:poza2.jpg?300|}}{{:pm:prj2023:amocanu:implementare-joc-battleship:poza3.jpg?300|}}{{:pm:prj2023:amocanu:implementare-joc-battleship:poza4.jpg?300|}}{{:pm:prj2023:amocanu:implementare-joc-battleship:poza5.jpg?300|}}{{:pm:prj2023:amocanu:implementare-joc-battleship:poza6.jpg?300|}}{{:pm:prj2023:amocanu:implementare-joc-battleship:poza7.jpg?300|}} | ||
+ | |||
+ | Link functionalitate joc: https://drive.google.com/file/d/1RmKv85lGWfdCYsZFTIDbRUb7dYbA8ft5/view?usp=sharing | ||
- | <note> | ||
- | </note> | ||
=====Concluzii===== | =====Concluzii===== | ||
Line 165: | Line 179: | ||
<note> | <note> | ||
+ | {{:pm:prj2023:amocanu:implementare-joc-battleship:battleship_game.zip|}} | ||
</note> | </note> | ||
Line 180: | Line 195: | ||
* [[pm:prj2023:amocanu:implementare-joc-battleship:create-page|]] | * [[pm:prj2023:amocanu:implementare-joc-battleship:create-page|]] | ||
* https://www.geeksforgeeks.org/check-if-two-given-line-segments-intersect/ | * https://www.geeksforgeeks.org/check-if-two-given-line-segments-intersect/ | ||
- | * https://wayoda.github.io/LedControl/pages/software?fbclid=IwAR14bmuPHK9cT6-bvWAnUvBlVggnvCTMq0_xEhhDtvhNI_r7f4MsGbPkc-o | ||
* https://forum.arduino.cc/t/turning-off-i2c-backlight/108963?fbclid=IwAR1xp6YQ1ukRXlfsvukuQEFxVcYd26rFnW6QF1iJ_VPmg6dZ3_G2gvFFvMc | * https://forum.arduino.cc/t/turning-off-i2c-backlight/108963?fbclid=IwAR1xp6YQ1ukRXlfsvukuQEFxVcYd26rFnW6QF1iJ_VPmg6dZ3_G2gvFFvMc | ||
* http://www.geeksforgeeks.org/orientation-3-ordered-points/ | * http://www.geeksforgeeks.org/orientation-3-ordered-points/ | ||
</note> | </note> |