sobota, 22 października 2016

Zaznaczanie naszych statków

Witam.

Dziś zajmiemy się funkcjami odpowiedzialnymi za nasze statki będą to:
-void zaznacz();
-void zaznaczrysuj();
Ta pierwsza odpowiada bezpośrednio za mechanikę zaznaczania natomiast ta druga rysuje nam planszę.zajmijmy się najpierw rysowaniem planszy.

void zaznaczrysuj()
{


 cout<<"|---|---|---|---|---|---|---|---|---|---|"<<endl;
    for(int j=0;j<=9;j++)
    {

    for(int i=0;i<=9;i++)
    {
    if (zaznaczenia[j][i]==true)
    {
      cout<<"| ";
    cout<<"Y ";
    }

    else
     cout<<"|"<<j<<" "<<i;
    }
    cout<<"|"<<endl<<"|---|---|---|---|---|---|---|---|---|---|"<<endl;
    }
}

Nie będziemy dokładnie opisywać powyższego  kodu ponieważ jest on bardzo podobny do tego rysującego planszę główną z tą różnicą że tu niema planszy bocznej na której są zaznaczone nasze statki ponieważ to jest nasza plansza, a plansza dla komputera jest obecnie zbędna.

Teraz pora na funkcję odpowiedzialną za mechanikę.

void zaznacz()
{
  char ii,jj; //deklarujemy zmienne do poprania znaków
  int iii,jjj; //deklasujemy zmienne do określania koordynatorów

  for(int i=0;i<20;i++)//pętla wywoływana do zaznaczenia 20 statków 
  {

  zaznaczrysuj(); //narysowanie naszej planszy
    do{
      jj=getch(); //pobranie pierwszej współrzędnej
      jjj=jj-48; //przypisanie pierwszej współrzędnej, odejmujemy 48 ponieważ każda cyfra jako znak ASCII ma wartość o 48 większą
      ii=getch();//to samo robimy z drugą współrzędna 
      iii=ii-48;


    if(zaznaczenia[jjj][iii]==true) //sprawdzamy czy nie zaznaczyliśmy wcześniej tego pola
    {
     system("cls");
     zaznaczrysuj();
     cout<<"to pole już zaznaczyłeś wybierz inne"<<endl;
     //jeśli zaznaczyliśmy czyścimy konsole rysujemy plansze i wypisujemy odpowiedni komentarz
     }
     if(jjj>=10||iii>=10||jjj<0||iii<0) //sprawdzamy czy na pewno wpisaliśmy pole z zakresu 
     {
     system("cls");
     zaznaczrysuj();
     cout<<"pole z poza zakresem"<<endl;
     //jeśli zaznaczyliśmy czyścimy konsole rysujemy plansze i wypisujemy odpowiedni komentarz
     }

  }while(zaznaczenia[jjj][iii]==true||jjj>=10||iii>=10||jjj<0||iii<0); //pętla wykonująca się dopóki nie zaznaczymy wolnego pola w zakresie naszej planszy   
  zaznaczenia[jjj][iii]=true; //jeśli powyższe warunki zostały spełnione zaznaczamy statek 
  system("cls");//czyścimy konsole
  }
}

Na zakończenie

Jeszcze jedno zdanie na temat polskich znaków w konsoli wszystko zostało dokładnie wyjaśnione w kursie Mirosława Zelenta
Teraz wystarczy wywołać naszą funkcję 

int main()

{
    zaznacz();

    rysuj();
}
i można podziwiać efekty naszej pracy





Podsumowanie.

Myślę że tyle kodu do napisania wystarczy na dziś. Oczywiście kod źródłowy całej aplikacji dostępny jest na moim profilu github. Zachęcam do samodzielnego przeanalizowania kodu.

Jestem otwarty na wszelkie uwagi, pytania, itp. Zapraszam do komentowania.



Brak komentarzy:

Prześlij komentarz