niedziela, 23 października 2016

Odgadywanie statków przeciwnika

Witam

Dzisiejszy post będzie krótki ponieważ nie mam za dużo czasu, a kod który napiszemy nie jest długi.
Dziś zajmiemy się funkcją która pozwala nam odgadywać statki przeciwnika. Więc zaczynajmy.


//?
void ruch()
{
  char ii,jj;
  int jjj,iii;
  do
  {
   do
  {
      jj=getch();
      jjj=jj-48;
      ii=getch();
      iii=ii-48;

     if(strzal[jjj][iii]==true)
     {
     system("cls");
     rysuj();
     cout<<"to pole już zaznaczyłeś wybierz inne"<<endl;
    }
     if(jjj>=10||iii>=10||jjj<0||iii<0)
     {
     system("cls");
     rysuj();
     cout<<"pole z poza zakresem"<<endl;
     }
  }while(strzal[jjj][iii]==true||jjj>=10||iii>=10||jjj<0||iii<0);


  strzal[jjj][iii]=true;
  system("cls");
//?
  if(statek[jjj][iii]==true&&strzal[jjj][iii]==true&&punk<20&&punk_kom<20)
     {
      rysuj(); //ta funkcja musi tu być ponieważ wcześniej wyczyściliśmy ekran i gdybyśmy trafili statek przeciwnika zobaczylibyśmy pusty ekran
        if(punk==20) //tutaj jeszcze raz sprawdzamy czy nie zestrzeliliśmy wszystkich statków przeciwnika ponieważ ta informacja jest aktualizowana dopiero przy rysowaniu
           {
               system("cls");
           }
     }
  }while(statek[jjj][iii]==true&&strzal[jjj][iii]==true&&punk<20&&punk_kom<20);

}

Kodu znajdującego się pomiędzy "//?" nie będziemy analizować ponieważ jest on niemal identyczny jak zaznaczenie naszych statków które opisałem w poprzedniej części kursu.
Natomiast druga pętla while odpowiada za dodatkowy strzał jeśli trafimy w statek przeciwnika. Będzie się ona wykonywać dopóki będziemy trafiać lub zestrzelimy wszystkie statki.
Teraz możesz wywołać wywołać tą funkcję w funkcji main()
int main()
{
    zaznacz();
while(true)
    {
    rysuj();
    ruch();

    }
}

I możemy podziwiać efekty naszej pracy.

Co prawda nie zestrzelimy żadnego statku przeciwnika ponieważ nie wprowadziliśmy jeszcze sztucznej inteligencji, ale tym zajmiemy się w następnej części kursu.

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