ALT Opublikowano 15 Sierpnia 2012 Opublikowano 15 Sierpnia 2012 Moja testowa plansza (tablica) wygląda tak: int lvl[11][20]={{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1}, {1,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1}, {1,0,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, }; To jest kod który porusza potworkami (Poprzedni działał poprawnie ale musiałem wtedy dużo zmiennych narąbać) void setmove() { int a; int b; int hyp=0; for (a=0;a<11;a++)//y { for (b=0;b<20;b++)//x { if (lvl[a][b]==2) { if (a==y+1 or a==y+2 or a==y+3 or a==y+4) { if(lvl[a+1][b]==0) { lvl[a][b]=0; lvl[a+1][b]=2; } } else if (a==y-1 or a==y-2 or a==y-3 or a==y-4) { if(lvl[a-1][b]==0) { lvl[a][b]=0; lvl[a-1][b]=2; } } else if (b==x+1 or b==x+2 or b==x+3 or b==x+4) { if(lvl[a][b+1]==0) { lvl[a][b]=0; lvl[a][b+1]=2; } } else if (b==x-1 or b==x-2 or b==x-3 or b==x-4) { if(lvl[a][b-1]==0) { lvl[a][b]=0; lvl[a][b-1]=2; } } } } } } Działa on co klik klawisza. Tera pytanie, co w nim źle zrobiłem że wrogowie się oddalają i teleportują ? Plansza jest przedstawiona na tablicy, mam kod który ją zamienia na "rysunek"
Floodnik Opublikowano 15 Sierpnia 2012 Opublikowano 15 Sierpnia 2012 Zakładam, że x, y to współrzędne gracza? Oddalają się, bo tak ich zaprogramowałeś. Na przykładzie pierwszego ifa: if (a==y+1 or a==y+2 or a==y+3 or a==y+4) ... lvl[a][b]=0; lvl[a+1][b]=2; Jeśli npc jest przesunięty od gracza o 1/2/3/4 poziomy w dół(a==y+1 itd.), to npc przesuwa się o 1 poziom w dół(lvl[a+1]=2)... Czyli jeszcze bardziej się oddala. A teleportują się dlatego, że wykonujesz pętlę. Za każdym razem, kiedy powyższe warunki są spełnione, npc porusza się. Dajesz im taką możliwość kilka razy w ciągu wykonywania funkcji setmove()...
ALT Opublikowano 15 Sierpnia 2012 Autor Opublikowano 15 Sierpnia 2012 O patrz dzięki, jak będę w domu to sprawdze czy już wszystko działa dobrze
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się