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.
Jestem otwarty na wszelkie uwagi, pytania, itp. Zapraszam do komentowania.
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