This shows you the differences between two versions of the page.
pm:prj2021:apredescu:battleship [2021/06/03 18:33] miruna_dalia.tirca [Descriere generală] |
pm:prj2021:apredescu:battleship [2021/06/04 18:50] (current) miruna_dalia.tirca [Download] |
||
---|---|---|---|
Line 64: | Line 64: | ||
- setup() | - setup() | ||
- | * Initializare de variabile: hartile, pozitia de inceput de atac (stanga sus), WON(id-ul jucatorului castigator, initial -1). | + | * Initializarea variabilelor: hartile, pozitia de inceput de atac (stanga sus), WON(id-ul jucatorului castigator, initial -1). |
* Initializarea modulelelor: LCD, matricea de LED-uri, keypad. | * Initializarea modulelelor: LCD, matricea de LED-uri, keypad. | ||
- loop() | - loop() | ||
- | * Cat timp jocul nu este castigat, astept ca jucatorul curent sa aleaga ce pozitie va ataca: afisez pe matricea de LED-uri pozitia selectata de jucator prin apasarea tastelor (si deplasarea) pana cand este apasata tasta 5 - cand se va verifica pe harta adversarului (o matrice cu 0/1, unde daca la pozitia i,j este 1, inseaamna ca celula face parte dintr-o nava) daca atacul este hit sau miss. | + | * Cat timp jocul nu este castigat, astept ca jucatorul curent sa aleaga ce pozitie va ataca: afisez pe matricea de LED-uri pozitia selectata de jucator prin apasarea tastelor (si deplasarea) pana cand este apasata tasta 5 - cand se va verifica pe harta adversarului (o matrice de 0 si 1) daca atacul este hit sau miss. |
- | * Daca a fost hit, se pastreaza acelasi player, iar daca a fost miss, se marcheaza pe harta adversarului (se trece celula de la acea pozitie din 1 in 0) si se trece la player-ul urmator. | + | * Daca a fost hit, se pastreaza acelasi player, iar daca a fost miss, se marcheaza pe harta adversarului si se trece la player-ul urmator. |
* Jocul a fost castigat atunci cand harta adversarului este complet nula, moment in care este afisat un mesaj pe LCD si pe matricea de LED-uri apare harta "doborata" a adversarului. | * Jocul a fost castigat atunci cand harta adversarului este complet nula, moment in care este afisat un mesaj pe LCD si pe matricea de LED-uri apare harta "doborata" a adversarului. | ||
Line 76: | Line 76: | ||
- generateMap | - generateMap | ||
* Genereaza o matrice de 0 si 1 ce reprezinta o harta cu nave de lungime 2, 3 si 4 aseazate random (navele sunt marcate cu 1 in matrice). | * Genereaza o matrice de 0 si 1 ce reprezinta o harta cu nave de lungime 2, 3 si 4 aseazate random (navele sunt marcate cu 1 in matrice). | ||
- | * Pentru fiecare noua nava, folosesc functia random pentru a gasi pozitia de start (x si y) si directia (sus, jos, stanga, dreapta). Pe baza acestor date calculez pozitia in care se termina nava - vazuta ca un segment de la (xStart, yStart) la (xEnd, yEnd). La adaugarea fiecarei noi nave, verific daca intersecteaza cu segmentul unei alte nave deja amplasate. | + | * Pentru fiecare noua nava, folosesc functia random pentru a gasi pozitia de start si directia. Pe baza acestor date verific daca nava nu intersecteaza cu alte nave deja amplasate. |
- checkHit | - checkHit | ||
- | * Derifica pentru player-ul curent daca pe harta adversarului, la pozitia atacata se gaseste o nava (daca la acea pozitie se gasetse 1 pe matricea adversarului) si returneaza 1 la hit, 0 la miss. | + | * Verifica pentru player-ul curent daca pe harta adversarului, la pozitia atacata se gaseste o nava si returneaza 1 la hit, 0 la miss. |
- | * La fiecare hit, se marcheaza cu 0 la acea pozitie. | + | * La fiecare hit, se marcheaza acea pozitie pe harta. |
- checkWin | - checkWin | ||
Line 96: | Line 96: | ||
Video: https://www.youtube.com/watch?v=DhTAVobn_Z4 | Video: https://www.youtube.com/watch?v=DhTAVobn_Z4 | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
- | Proiectul este realizat in intregime si functional. Mi-a placut sa lucrez la acest proiect, pentru ca am putut sa vad si o implemntare in harware a unui joc. Am invatat sa folosesc keypad-ul, modulele de LCD si matricea de LED-uri folosind in partea de software functiile din bibliotecile corespunzatoare. | + | Proiectul este realizat in intregime si functional. Mi-a placut sa lucrez la acest proiect, pentru ca am putut sa vad si o implementare in harware a unui joc. Am invatat sa folosesc keypad-ul, modulele de LCD si matricea de LED-uri, folosind in partea de software functiile din bibliotecile corespunzatoare. |
===== Download ===== | ===== Download ===== | ||
Cod sursa: {{:pm:prj2021:apredescu:tircamiruna_cod_sursa.zip|}} | Cod sursa: {{:pm:prj2021:apredescu:tircamiruna_cod_sursa.zip|}} | ||
+ | |||
+ | |||
+ | |||
+ | ===== Jurnal ===== | ||
+ | * 30 aprilie: alegere tema proiect, creare pagina de documentatie | ||
+ | * 4 mai: achizitionare piese | ||
+ | * 10 mai: asamblare piese hardware, testare componente | ||
+ | * 17 mai: implementarea jocului | ||
+ | * 30 mai: schema electrica | ||
+ | * 4 iunie: finalizare pagina de documentatie | ||
+ | |||
+ | |||
===== Bibliografie ===== | ===== Bibliografie ===== | ||
https://bitbucket.org/nerdfirst/arduino-8x8-basics/src/master/ | https://bitbucket.org/nerdfirst/arduino-8x8-basics/src/master/ | ||
Line 107: | Line 119: | ||
https://www.geeksforgeeks.org/check-if-two-given-line-segments-intersect/ | https://www.geeksforgeeks.org/check-if-two-given-line-segments-intersect/ | ||
+ | |||
+ | {{:pm:prj2021:apredescu:tircamiruna_wiki.pdf|}} | ||
+ | |||