trolu122 Opublikowano 8 Maja 2013 Udostępnij Opublikowano 8 Maja 2013 no naprawde ręce mi opadły, od paru tygodni pisałem AI dla przeciwnika... caly czas coś nie grało. próbowałem juz na wszelkie sposoby jakie znam, ciągle były jakieś bugi. przeglądałem cały kod, pisałem od nowa no koorvicy dostawałem, ale sie udało. i powiedzcie mi bo ja juz zgłupiałem do reszty :boxed: GML if hspeed>0 { if (place_meeting(x+(sprite_width/2)+7,y+1,obj_podloze)=false) {hspeed=-run}} if hspeed<0 { if (place_meeting(x-(sprite_width/2)-7,y+1,obj_podloze)=false) {hspeed=run}} czy cos tu jest nie tak? ludzik bada czy ma przed sobą podloze, jak nie ma zmienia kierunek. kolejność działań chyba znam, juz liczyłem na kalkulatorze, ludek idzie w prawo jest ok, idzie w lewo spada w dół :boxed: zmieniłem w drugiej czesci kod na GML if (place_meeting(x-30,y+1,obj_podloze)=false) działa :blink: :blink: :blink: czy ja czegos nie zauważałem ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 8 Maja 2013 Udostępnij Opublikowano 8 Maja 2013 odpal sobie debug i oglądaj wartość odpowiedniego wyrażenia Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
trolu122 Opublikowano 8 Maja 2013 Autor Udostępnij Opublikowano 8 Maja 2013 a jak to odpalic? no teraz to juz wszystko dziala, a zmieniłem tylko to co podałem, choć wcześniej sądze tez bylo poprawnie... a ten czerwony play. ok ale nie wiem co to mi daje? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kaszan88 Opublikowano 8 Maja 2013 Udostępnij Opublikowano 8 Maja 2013 Może pojedyńczy znak równości jest problemem. Porównanie to == a nie = :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 8 Maja 2013 Udostępnij Opublikowano 8 Maja 2013 w GMie to nie ma różnicy Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Korodzik Opublikowano 9 Maja 2013 Filar Społeczności Udostępnij Opublikowano 9 Maja 2013 Sprawdź sobie w tym debugu, ile wynosi wartość place_meeting(x-(sprite_width/2)-7,y+1,obj_podloze oraz place_meeting(x-30,y+1,obj_podloze) Przy czym do zmiennych: x, y, sprite_width dopisz np. numer id konkretnego ludzika (w nawiasach), np. place_meeting((100343).x-((100343).sprite_width/2)-7,(100343).y+1,obj_podloze i może też na wszelki wypadek sprawdź: obj_ludzik.sprite_width Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 9 Maja 2013 Administratorzy Udostępnij Opublikowano 9 Maja 2013 Polecam poczytanie: http://gmc.yoyogames.com/index.php?showtopic=481823 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 9 Maja 2013 Udostępnij Opublikowano 9 Maja 2013 GML if hspeed>0 { if (place_meeting(x+(sprite_width/2)+7,y+1,obj_podloze)=false) {hspeed=-run}} if hspeed<0 { if (place_meeting(x-(sprite_width/2)-7,y+1,obj_podloze)=false) {hspeed=run}} Zauważ, że jeżeli wykonasz cztery pierwsze linijki kodu, to na pewno wykonasz też cztery kolejne (dlaczego?). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 9 Maja 2013 Udostępnij Opublikowano 9 Maja 2013 sprite_width uwzględnia manipulację image_xscale, więc może być ujemne. chcesz ominięcia tego, dziel przez image_xscale lub użyj sprite_get_width gdybyś odpalił debuga i sprawdził to, co poleca ci sprawdzić korodzik, doszedłbyś do właśnie tego. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
trolu122 Opublikowano 9 Maja 2013 Autor Udostępnij Opublikowano 9 Maja 2013 aaa czyli jednak coś robiłem źle.... a powiedzcie mi jeszcze jak sprawdzić te kody? da sie na gm6? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 9 Maja 2013 Udostępnij Opublikowano 9 Maja 2013 GM6 WTF ale tak da się tam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 9 Maja 2013 Udostępnij Opublikowano 9 Maja 2013 Najlepiej użyć show_message(interesująca cię wartość/funkcja) w celu sprawdzenia, czy wyniki zgadzają się z obliczeniami. Stosuję to w każdym projekcie, nigdy mnie nie zawiodło. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jaklub Opublikowano 9 Maja 2013 Udostępnij Opublikowano 9 Maja 2013 Najlepiej użyć show_message(interesująca cię wartość/funkcja) w celu sprawdzenia, czy wyniki zgadzają się z obliczeniami. Stosuję to w każdym projekcie, nigdy mnie nie zawiodło. to zależy też od sytuacji, jeśli musisz obserwować wartość na przestrzeni większej ilości klatek, zdecydowanie lepszy będzie debug mode, gmowy lub własny. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ereg Opublikowano 9 Maja 2013 Udostępnij Opublikowano 9 Maja 2013 czasami show_message nienadaje sie (v STEP event itp.) v takim razie przyda sie draw_text :thumbsup: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 9 Maja 2013 Udostępnij Opublikowano 9 Maja 2013 Dobry też jest show_debug_message() o czym Nirvan się mocno przekonał jak mu to pokazałem. Pokażę wam mój log stworzony za pomocą show_debug_message(), który rejestruje poczynania AI: Debug[0] = 1 Debug[0] = 2 Debug[0] = 0 Debug[1] = 1 Debug[2] = 1 endOfPath choosePosition 1 gChoosenUnit 100415 moveAttempts = 5 choosePosition+1 = 0 choosePosition 0 gChoosenUnit 100413 computeTarget choosePosition+1 = 1 AI_moveAttempt = 4 moveAttempts-1 = 4 choosePosition 1 gChoosenUnit 100415 moveAttempts = 4 choosePosition+1 = 0 choosePosition 0 gChoosenUnit 100413 computeTarget choosePosition+1 = 1 AI_moveAttempt = 3 moveAttempts-1 = 3 choosePosition 1 gChoosenUnit 100415 moveAttempts = 3 choosePosition+1 = 0 choosePosition 0 gChoosenUnit 100413 computeTarget choosePosition+1 = 1 AI_moveAttempt = 2 moveAttempts-1 = 2 choosePosition 1 gChoosenUnit 100415 moveAttempts = 2 choosePosition+1 = 0 choosePosition 0 gChoosenUnit 100413 computeTarget choosePosition+1 = 1 AI_moveAttempt = 1 moveAttempts-1 = 1 choosePosition 1 gChoosenUnit 100415 moveAttempts = 1 choosePosition+1 = 0 choosePosition 0 gChoosenUnit 100413 computeTarget choosePosition+1 = 1 AI_moveAttempt = 0 moveAttempts-1 = 0 unit deactivate choosePosition 1 gChoosenUnit 100415 moveAttempts = 0 endTurn2 Turn is ending... moveAttempts = 12 computeType choosePosition 0 gChoosenUnit 100414 computeTarget choosePosition+1 = 1 AI_moveAttempt = 5 moveAttempts-1 = 11 choosePosition 1 gChoosenUnit 100416 computeTarget unit: 100416 new target: 100161 moveCount = -0.22 AI_moveAttempt = 6 moveAttempts-6 = 5 endOfPath choosePosition 1 gChoosenUnit 100416 moveAttempts = 5 choosePosition+1 = 0 choosePosition 0 gChoosenUnit 100414 computeTarget choosePosition+1 = 1 AI_moveAttempt = 4 moveAttempts-1 = 4 choosePosition 1 gChoosenUnit 100416 moveAttempts = 4 choosePosition+1 = 0 choosePosition 0 gChoosenUnit 100414 computeTarget choosePosition+1 = 1 AI_moveAttempt = 3 moveAttempts-1 = 3 choosePosition 1 gChoosenUnit 100416 moveAttempts = 3 choosePosition+1 = 0 choosePosition 0 gChoosenUnit 100414 computeTarget choosePosition+1 = 1 AI_moveAttempt = 2 moveAttempts-1 = 2 choosePosition 1 gChoosenUnit 100416 moveAttempts = 2 choosePosition+1 = 0 choosePosition 0 gChoosenUnit 100414 computeTarget choosePosition+1 = 1 AI_moveAttempt = 1 moveAttempts-1 = 1 choosePosition 1 gChoosenUnit 100416 moveAttempts = 1 choosePosition+1 = 0 choosePosition 0 gChoosenUnit 100414 computeTarget choosePosition+1 = 1 AI_moveAttempt = 0 moveAttempts-1 = 0 unit deactivate choosePosition 1 gChoosenUnit 100416 moveAttempts = 0 endTurn2 Turn is ending... moveAttempts = 12 computeType choosePosition 0 gChoosenUnit 100413 computeTarget choosePosition+1 = 1 AI_moveAttempt = 5 moveAttempts-1 = 11 choosePosition 1 gChoosenUnit 100415 computeTarget moveCount = 2.90 endOfPath choosePosition 1 gChoosenUnit 100415 computeTarget choosePosition+1 = 0 AI_moveAttempt = 5 moveAttempts-1 = 10 choosePosition 0 gChoosenUnit 100413 computeTarget choosePosition+1 = 1 AI_moveAttempt = 4 moveAttempts-1 = 9 choosePosition 1 gChoosenUnit 100415 computeTarget choosePosition+1 = 0 AI_moveAttempt = 4 moveAttempts-1 = 8 choosePosition 0 gChoosenUnit 100413 computeTarget choosePosition+1 = 1 AI_moveAttempt = 3 moveAttempts-1 = 7 choosePosition 1 gChoosenUnit 100415 computeTarget choosePosition+1 = 0 AI_moveAttempt = 3 moveAttempts-1 = 6 choosePosition 0 gChoosenUnit 100413 computeTarget choosePosition+1 = 1 AI_moveAttempt = 2 moveAttempts-1 = 5 choosePosition 1 gChoosenUnit 100415 computeTarget choosePosition+1 = 0 AI_moveAttempt = 2 moveAttempts-1 = 4 choosePosition 0 gChoosenUnit 100413 computeTarget choosePosition+1 = 1 AI_moveAttempt = 1 moveAttempts-1 = 3 choosePosition 1 gChoosenUnit 100415 computeTarget choosePosition+1 = 0 AI_moveAttempt = 1 moveAttempts-1 = 2 choosePosition 0 gChoosenUnit 100413 computeTarget choosePosition+1 = 1 AI_moveAttempt = 0 moveAttempts-1 = 1 unit deactivate choosePosition 1 gChoosenUnit 100415 computeTarget choosePosition+1 = 0 AI_moveAttempt = 0 moveAttempts-1 = 0 unit deactivate choosePosition 0 gChoosenUnit 100413 moveAttempts = 0 endTurn2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 9 Maja 2013 Udostępnij Opublikowano 9 Maja 2013 Wiedziałem, że posypią się takie komentarze. Debugowanie jakoś mi nie podpada, widocznie to problem z moim myśleniem : / 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ę