ALT Opublikowano 16 Sierpnia 2012 Udostępnij Opublikowano 16 Sierpnia 2012 Mam taką pętle, która rusza npc: 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; } } 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; } } 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; } } 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; } } } } } } I teraz, jak przerobić ją by po poruszeniu npc w np. lewo, i po przejściu pęli w lewo nie zapętlała się i nie poruszała nim więcej niż 1 raz. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 16 Sierpnia 2012 Administratorzy Udostępnij Opublikowano 16 Sierpnia 2012 break, plus ew. flaga zeby wyjsc też z drugiego fora ? btw. if (a==y+1 or a==y+2 or a==y+3 or a==y+4) == if (a > y and a < y+5) i jeszcze kilka innych rzeczy by mozna zmienic Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 16 Sierpnia 2012 Autor Udostępnij Opublikowano 16 Sierpnia 2012 No właśnie ni zielonego pojęcia mam jak to zrobić. Próbowałem już i wychodziło tak że nic :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Floodnik Opublikowano 27 Sierpnia 2012 Udostępnij Opublikowano 27 Sierpnia 2012 Jeśli masz tylko jednego NPC, to tak jak gnysek mówił. Na samym początku definiujesz zmienną np. bool isbroken=0; W ifach dajesz break; isbroken=1; za wewnętrznym forem dajesz if(isbroken) break; Jeśli jedna globalna funkcja steruje większą ilością NPC, to sprawa jest bardziej skomplikowana. Ja bym zrobił klasę dla NPC a każdy z nich byłby obiektem, który "myśli" samodzielnie. Skoro jednak chcesz zostawić obecny sposób poruszania się, to trzeba pokombinować. Przykładowo, zrób sobię tablicę bool zmienna[][] o wielkości takiej samej, jak mapa. Wartości są ustawiane na false na początku wykonywania setmove(). W ifach dajesz dodatkowy warunek - !zmienna[a], co oznacza, że NPC stojący w tym miejscu jeszcze się nie poruszył. W momencie ruchu ustawiasz dane miejsce w zmienna[][] o współrzędnej docelowej na true. Przykładowo w pierwszym ifie dopisujesz zmienna[a-1]=true; i tak dalej. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 28 Sierpnia 2012 Autor Udostępnij Opublikowano 28 Sierpnia 2012 Spójrz na datę, już rozwiązane. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
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ę