Skip to content

rmrn65/BattleShips

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IMPORTANT ! PENTRU A PUTEA FI JUCAT, CONSOLA TREBUIE SA FIE FULLSCREEN (sau minim 125x41)

RULARE make battleships make run sau ./battleships <my_board.txt> Daca rularea va fi manuala , atunci pentru o nuoa compilare va fi nevoie sa stergeti executabilul curent CERINTE REZOVLATE

  • Cerinta 1
  • Cerinta 2
  • Cerinta 3
  • Cerinta 4
  • Cerinta 5

FEREASTRA PRINCIPALA

  • Fereastra principala e compusa din un asciiart care reprezinta numele jocului, marginita de # si * pentru design.
  • Ascii-Art-ul a fost salvat intr-un fisier separat, din care s-a citit linie cu linie si s-a printat deasupra ferestrei principale a jocului.
  • Atat fereastra principala este proiectata sa apare mereu in centrul consolei.
  • Am facut asta folosind parametrii LINS si COLS ale consolei care reprezinta numarul de linii si de coloane din care e formata (minim 125 de coloane si 41 de linii pentru a arata estetic)

MENIUL CU OPTIUNI

  • Optiunile sunt pozitionate intr-o fereastra pe coloana. Navigarea printre optiuni e evidentiata cu hilight folosind functia attron(REVERSE) la fiecare apasare a cheilor KEY_UP si KEY_DOWN a tastaturii.
  • Daca este aleasa optiunea New Game se vor initializa toti parametrii structurilor si fereastra necesara desfasurarii jocului.
  • Daca este aleasa optiunea Resume Game, se vor pastra parametrii structurilor si se va copia fereastra cu functiile scr_dump(savefile) scr_restore(savefile), unde savefile este fisierul in care se retina starea vizuala a jocului in fiecare etapa. Resume Game devine valabil doar daca anterior s-a apasat pe New Game
  • Daca este aleasa optiunea Quit ies complet din joc

FEREASTRA JOCULUI

  • Fereastra jocului e compusa din tabla jucatorului pe care o printeaza in partea stanga.Tabla jucatorului poate fi editata din fisierul my_board.txt, iar in dreapta o tabla goala unde urmeaza ca jucatorul sa ghiceasca pozitia navelor inamicului. Tabla inamicului se afla desenata in fisierul enemy_board.txt.
  • In partea de stanga jos sunt afisate posibilele actiuni care pot fi facute pe parcusrsul jocului: * Q care e folosit pentru a iesi din joc * R pentru randomizarea tablei de joc * D pentru a distruge cate 10 de fiecare parte

PROIECTAREA JOCULUI

  • Ideea principala este in proiectarea celor doua structuri SHIPS si PLAYER
  • Structura SHIPS se refera la nevele pozitionate pe tabla
  • Ships este formata din : len -> lungimea navelor startx -> coordonata x a pivotului navei starty -> coordonata y a pivotului navei direction -> daca e orizontala sau verticala damaged -> de cate ori a fost lovta
  • Navele au un punct de referinta - un punct pivot - de acolo incepe dezvoltarea lor. Este aleasa o orientare si in functie de lungimea lor se adauga cate o bucata de nava de la punctul pivot in directia corespunzatoare La generarea acestora se actualizeaza o matrice numita "interzis" care decide care casute pot fi acceesate si care nu.
  • Player este format din : ships -> navele lor board -> tabla lor sub forma unei matrice de 0 si 1 visited -> ce casute au incercat pe tabla inamica hit -> de cate ori au lovit o nava count_destroyed -> cate nave inamice au distrus
  • Jucatorii incearca o coordonata de tip y x de pe fiecare tabla. Daca celula corespunzatoare nu a fost vizitata (adica visited[y][x] == 0) atunci se actualizeaza tabla. Daca pe "board"-ul inamic se afla "1" in locul atacat, se considera ca a fost lovita o nava, si creste atat "hit", cat si atributul "damaged" din cadrul structurii navei inamice
    NOTATII
  • Se noteaza cu "-" daca a fost aleasa o celula fara nava
  • Se noteaza cu "X" daca jucatorul a nimerit o bucata de nava inamica
  • Se noteaza cu "#" daca o nava proprie a fost lovita

DESIGN

  • La fiecare actiune pe tabla de joc se vor aduaga culori pentru a semnala schimbarea facuta

About

Game of Battleships working in console

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published