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|}} | ||
| + | |||