piątek, 28 października 2016

Stworzenie sztucznej inteligencji

Witam 

W dzisiejszym artykule zajmiemy się dwiema funkcjami odpowiedzialnymi za sztuczną inteligencję. Na Początek zajmijmy się funkcją która zaznaczy statki przeciwnika czyli void wylicz();

void wylicz()
{
   int iii,jjj; //tworzymy dwie zmienne które będą wskazywać odpowiednie współrzędne 
   srand(time(NULL)); //pobieramy czas komputera, ta funkcja jest niezbędna do działania liczb losowych
   for(int i=0;i<20;i++) //pętla której zawartość będzie wykonywać się 20 razy ponieważ chcemy żeby komputer zaznaczył 20 statków 
   {
      do
      {
          jjj=rand()%10;
          iii=rand()%10;
          //losujemy współrzędne statku 
      }while(statek[jjj][iii]==true); //sprawdzamy czy statek nie jest już zaznaczony jeśli jest losujemy współrzędne ponownie
   statek[jjj][iii]=true; //przypisujemy współrzędne 
}}

Teraz pora na funkcję odpowiedzialną za zgadywanie pozycji naszych statków przez komputer

void atak()
{
    int iii,jjj;
    srand(time(NULL));
    do
    {
        do
        {
            jjj=rand()%10;
            iii=rand()%10;
        }
        while(strzal_kom[jjj][iii]==true);
        strzal_kom[jjj][iii]=true;
//powyższa część kodu jest niemal identyczna jak we wcześniejszej funkcji dlatego nie będę jej opisywał
        if(zaznaczenia[jjj][iii]==&&strzal_kom[jjj][iii]==true&&punk_kom<20&&punk<20) //sprawdzamy czy komputer trafił w nasz statek i jeśli trafiliśmy aktualizujemy dane odnośnie zestrzeleń naszych statków
        {
            rysuj();
            system("cls");
            if(punk_kom==20)
            {
                system("cls");
            }
        }
    }while(zaznaczenia[jjj][iii]==true&&strzal_kom[jjj][iii]==true&&punk<20&&punk_kom<20);
//jeśli komputer trafił zgaduje jeszcze raz 
}

Sztuczną inteligencję już mamy, pozostaje nam ją jeszcze wywołać w int main() w ten sposób.

int main()
{
    zaznacz();
    wylicz();
    while(true)
    {
        rysuj();
        ruch();
        atak();
    }
}

I możemy już podziwiać efekty naszej pracy:
Zauważamy jednak jeden problem, pomimo że wszystkie statki zostały zestrzelone gra się nie skończyła i możemy dalej zaznaczać nasze statki. Tym problemem zajmiemy się jednak dopiero tworząc menu 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