Skocz do zawartości

kod


Skovv

Rekomendowane odpowiedzi

Siemka.Napisałem taki kod na zastopowanie animacji:

if other.sprite_index=player_stoi_dol or other.sprite_index=player_stoi_gora or other.sprite_index=player_stoi_lewo or other.sprite_index=player_stoi_prawo{
if sprite_index=player_stoi_dol{sprite_index=player_atak_dol; image_speed=0}
else
if sprite_index=player_stoi_gora{sprite_index=player_atak_gora; image_speed=0}
else
if sprite_index=player_stoi_lewo{sprite_index=player_atak_lewo; image_speed=0}
else
if sprite_index=player_stoi_prawo{sprite_index=player_atak_prawo; image_speed=0}
}
else
{
if sprite_index=player_stoi_dol{sprite_index=player_biegnie_dol; image_speed=0}
else
if sprite_index=player_stoi_gora{sprite_index=player_biegnie_gora; image_speed=0}
else
if sprite_index=player_stoi_lewo{sprite_index=player_biegnie_lewo; image_speed=0}
else
if sprite_index=player_stoi_prawo{sprite_index=player_biegnie_prawo; image_speed=0}
}
else
{
if sprite_index=player_stoi_dol{sprite_index=player_umiera_dol; image_speed=0}
else
if sprite_index=player_stoi_gora{sprite_index=player_umiera_gora; image_speed=0}
else
if sprite_index=player_stoi_lewo{sprite_index=player_umiera_lewo; image_speed=0}
else
if sprite_index=player_stoi_prawo{sprite_index=player_umiera_prawo; image_speed=0}
}
else
{
if sprite_index=player_atak_dol{sprite_index=player_stoi_dol}
if sprite_index=player_atak_gora{sprite_index=player_stoi_gora}
if sprite_index=player_atak_lewo{sprite_index=player_stoi_lewo}
if sprite_index=player_atak_prawo{sprite_index=player_stoi_prawo}
}
else
{
if sprite_index=player_biegnie_dol{sprite_index=player_stoi_dol}
if sprite_index=player_biegnie_gora{sprite_index=player_stoi_gora}
if sprite_index=player_biegnie_lewo{sprite_index=player_stoi_lewo}
if sprite_index=player_biegnie_prawo{sprite_index=player_stoi_prawo}
}
else
{
if sprite_index=player_umiera_dol{sprite_index=player_stoi_dol}
if sprite_index=player_umiera_gora{sprite_index=player_stoi_gora}
if sprite_index=player_umiera_lewo{sprite_index=player_stoi_lewo}
if sprite_index=player_umiera_prawo{sprite_index=player_stoi_prawo}

 

wyskakuje błąd:

FATAL ERROR in
action number 1
of Other Event: Animation End
for object Player:

COMPILATION ERROR in code action
Error in code at line 20:
   else

at position 2: Unexpected symbol in expression.

 

Ten kod jest chyba zły.Jak napisać lepszy??

Odnośnik do komentarza
Udostępnij na innych stronach

#up

GML
if keyboard_check(vk_right) and sprite_index != player_biegnie_prawo then sprite_index = player_biegnie prawo

if !keyboard_check(vk_right) then

sprite_index = player_stoi_prawo

Chociaz tu lepiej by bylo z else, bo w lewo jak zrobisz tak samo to to nie bedzie wiedzialo co robic jak nie bedzie wcisniety i prawy i lewy :D

Napisałes sobie o przycisku, a w kodzie tego nie napisales.

A i uzywaj znacznikow [ gml]

Odnośnik do komentarza
Udostępnij na innych stronach

GML
if keyboard_check(vk_right) and sprite_index != player_biegnie_prawo then sprite_index = player_biegnie prawo

if !keyboard_check(vk_right) then

sprite_index = player_stoi_prawo

if keyboard_check(vk_left) and sprite_index != player_biegnie_lewo then sprite_index = player_biegnie_lewo

if !keyboard_check(vk_left) then

sprite_index = player_stoi_lewo

...

tak to ma być??

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Ehh błąd jest prosty. zobacz jaką zrobiłeś konstrukcję:

 

GML
if costam=true

{

...

}

else //jeżeli costam ma dowolną wartość inną niż true

{

...

}

else //wszystkie możliwości już były, zatem do tego else trafia zbiór pusty - powoduje ono błąd..

//else nie można dać po innym else, daje się je tylko po if

{

...

}

else //do tego else program nawet nie dojdzie, bo już poprzednie wywaliło błąd

{

...

}

zauważ, że tylko pierwszy warunek wykona się jak cośtam=true, a drugi jak cośtam będzie miało dowolną inną wartość... ale pozostałe else nie mają żadnych warunków więc się nie wykonają, dlatego jest błąd ... do każdego if jest tylko jedno else. Co innego jak zrobisz else if - wtedy zostaje jeszcze jedno gołe else, ale nie więcej.

Prawidłowo było by tak:

 

GML
if costam=true

{

...

}

else if costam=7

{

...

}

else if costam='text'

{

...

}

else //wszystkie pozostałe przypadki

{

...

}

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

nie, już wszystko jest wyjaśnione. Ale powiem prościej, może załapiesz :P

 

Zakładamy, że idziesz do sklepu.

 

Jeżeli masz 2 złote - kupujesz chipsy. Jeżeli masz mniej, to nie kupujesz.

 

GML
if kasa=2

{

kupuje=true;

}

else

{

kupuje=false;

}

 

a teraz zakładamy, że jak masz 2 złote to kupujesz chipsy, jak złotówkę to snickersa, a jak mniej to nic.

 

GML
if kasa=2

{

kupuje=true;

chipsy=1;

snickers=0;

{

else if kasa>=1

{

kupuje=true;

chipsy=0;

snickers=1;

}

else

{

kupuje=false;

}

 

taka jest zasada. Jak idziesz na zakupy albo cię na coś stać, albo nie stać. Nie ma trzeciej opcji. Tak samo w programowaniu. Else to jest warunek który się dzieje w każdym innym przypadku niż te podane wcześniej, ale jeżeli po else dasz if, to możesz dodać kolejny warunek.

 

Oczywiście pomiędzy klamerkami możesz wstawiać następne if wg. tej samej zasady. Możesz też nie dawać else i też jest to dobrze, bo po prostu w przypadku gdy coś nie spełni warunku nie stanie się nic.

 

Mam nadzieję, że nieco wyjaśniłem.

Odnośnik do komentarza
Udostępnij na innych stronach

Napisałem taki kod na strzelanie z łuku:

GML
if direction=90{sprite_index=player_atak_gora; image_speed=1}

if direction=180{sprite_index=player_atak_lewo; image_speed=1}

if direction=270{sprite_index=player_atak_dol; image_speed=1}

if direction=0{sprite_index=player_atak_prawo; image_speed=1}

wszystko działa tylko sie nie zatrzymoje.strzela ciagle

Trzeba coś kombionować z image_speed?

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...