Skocz do zawartości

Znajdowanie drogi 2.0


Qbi Wan

Rekomendowane odpowiedzi

No np. po co przechowywać wartość sinusa? Po co wogóle ją obliczać? OBJ>create>scr: kąt czego przechowuje "Angle"? Skąd się wziął "przyrost wartości kąta? Dlaczego jak to odpalam to wyskakują mi błędy? Dlaczego trzeba ciągle wywalać siatkę i tworzyć ją od nowa?? Mam tego więcejdlatego wpadłem na taką analizę "step by step" :)

Odnośnik do komentarza
Udostępnij na innych stronach

Sinus jest użyty do uzyskania efektu animacji powiększenia się i zmniejszenia markera punktu docelowego.

Angle jest użyty zamiast direction

 

Błędy wyskakują Ci dlatego, że przykład był robiony w gamemakerze w wersji 6.1 lub 6.0, a ty pewnie używasz nowszej wersji 7.0, 8.0, lub 8.1. Nie wiem od której funkcja logn jest zmieniona.

 

Grida nie trzeba wywalać.

Odnośnik do komentarza
Udostępnij na innych stronach

Sinus jest użyty do uzyskania efektu animacji powiększenia się i zmniejszenia markera punktu docelowego.

(...) Grida nie trzeba wywalać.

A gdyby nie było funkcji sinus??

 

Obj>Player>left pressed>code>

 

>linia 11>Grid = mp_grid_create(0,0,40,30,16,16); //two¿ymy now¹ siatkê;

 

>linia 21: mp_grid_destroy(Grid); //wywal siatkê

Odnośnik do komentarza
Udostępnij na innych stronach

Umówmy się, że jeżeli rzadko będziesz używał wykrywania drogi. To możesz usuwać. Ale jeżeli jest to używane praktycznie zawsze (jak w heroes albo innej strategii) to nie widzę sensu usuwania jej.

 

Gdyby nie było sinusa, to by nie mogło być też obliczania kąta i marker po prostu by się pojawiał bez żadnego efektu.

Odnośnik do komentarza
Udostępnij na innych stronach

Marker czyli point czy goal? i jaki to efekt? marker przecież pojawia się tylko i przy kolizji znika :P W takim razie czy usuwanie grida ma jakieś praktyczne zastosowanie? Czego dotyczy ten błąd:

 

ERROR in

action number 1

of Draw Event

for object __newobject8:

 

Error in function logn().

 

Nie ma tam takiego obiektu, a jedyny Goal z eventem draw nie zawiera funkcji logn().

Odnośnik do komentarza
Udostępnij na innych stronach

Znalazłem ten kod :P Jak możnaby go poprawić? Zamienić logn na coś innego???

 

"// SYSTEM KOMUNIKATÓW - nie jest tematem przyk³adu wiêc go nie opisuê.

 

 

show_info();

var a;a=object_add();object_set_visible(a,false);object_event_add(a,ev_create,0,'global.M="";global.L=0;I=0;T=ds_grid_create(9,4);ds_grid_set(T,0,0,"Witam w przyk³adzie Znajdowanie Drogi!");ds_grid_set(T,0,1,room_width/2);ds_grid_set(T,0,2,room_height/2);ds_grid_set(T,0,3,room_speed*2);ds_grid_set(T,1,0,"Przyk³ad wykonany dla serwisu GMClan.org");ds_grid_set(T,1,1,room_width/2);ds_grid_set(T,1,2,room_height/2);ds_grid_set(T,1,3,room_speed*2);ds_grid_set(T,2,0,"Jego celem jest demonstracja dzia³ania funkcji planowania ruchu w GM");ds_grid_set(T,2,1,room_width/2);ds_grid_set(T,2,2,455);ds_grid_set(T,2,3,room_speed*4);ds_grid_set(T,3,0,"Klawiszologia: LEWY KLIK - wyznacz cie¿kê; PRAWY KLIK - id;#F1 lub F2 - Pomoc");ds_grid_set(T,3,1,room_width/2);ds_grid_set(T,3,2,445);ds_grid_set(T,3,3,room_speed*5);ds_grid_set(T,4,0,"Jeli znajdziejsz b³êdy w tym przyk³adzie, daj znaæ autorowi: most23@op.pl");ds_grid_set(T,4,1,room_width/2);ds_grid_set(T,4,2,455);ds_grid_set(T,4,3,room_speed*4);ds_grid_set(T,5,0,"© 2006 most23#www.gmclan.org | www.most23.prv.pl");ds_grid_set(T,5,1,room_width/2);ds_grid_set(T,5,2,445);ds_grid_set(T,5,3,room_speed*2);ds_grid_set(T,6,0,"F1 / F2 - Pomoc");ds_grid_set(T,6,1,580);ds_grid_set(T,6,2,17);ds_grid_set(T,6,3,false);eve

nt_perform(ev_alarm,0);');object_event_add(a,ev_alarm,0,'if(I<7){global.M=ds_grid_get(T,I,0);global.L=ds_grid_get(T,I,3);instance_create(ds

_grid_get(T,I,1),ds_grid_get(T,I,2),global.B);alarm[0]=ds_grid_get(T,I,3);I += 1;}else{global.M=ds_grid_get(T,7,0);global.L=ds_grid_get(T,7,3);instance_create(

ds_grid_get(T,7,1),ds_grid_get(T,7,2),global.B);}');object_event_add(a,ev_keypress,113,'if(I>=6){global.M=ds_grid_get(T,3,0);global.L=ds_grid_get(T,3,3);instance_create(d

s_grid_get(T,3,1),ds_grid_get(T,3,2),global.B);}');global.b=object_add();object_set_depth(global.b,-100000);object_set_visible(global.b,true);object_event_add(global.b,ev_create,0,'a[0]=global.M;a[1]=true;a[2]=false;a[3]=room_speed/2;a[4]=1;a[5]=5;a[6]=room_width*0.8;a[7]=(string_width_ext(a[0],-1,a[6])/2)+a[5];a[8]=(string_height_ext(a[0],-1,a[6])/2)+a[5];if(global.L!=false)then alarm[0]=global.L;');object_event_add(global.b,ev_alarm,0,'a[1]=false;');object_event_add(global.b,ev_draw,0,'a[9]=logn(a[3],a[4]);a[10]=a[7]*a[9];a[11]=a[8]*a[9];a[12]=x-a[10];a[13]=x+a[10];a[14]=y-a[11];a[15]=y+a[11];draw_set_alpha(a[9]*0.33);draw_rectangle_color(a[12]+5,a[14]

+5,a[13]+5,a[15]+5,c_black,c_black,c_black,c_black,0);draw_set_alpha(a[9]*0.60);

d

raw_rectangle_color(a[12],a[14],a[13],a[15],c_maroon,c_maroon,c_black,c_black,0)

;

draw_rectangle_color(a[12]-1,a[14]-1,a[13]-1,a[15]-1,c_white,c_white,c_black,c_black,1);draw_rectangle_color(a[12],a[14],a[13],a[15

],c_black,c_black,c_black,c_black,1);if(a[2]){draw_set_font(Times10);draw_set_ha

l

ign(fa_center);draw_set_valign(fa_center);draw_text_ext_color(x,y,a[0],-1,a[6],c_olive,c_olive,c_white,c_white,1);}if(a[1]){if(a[4]<a[3])then a[4] += 1;else a[2]=true;}else{a[2]=false;if(a[4]>0)then a[4] -= 1;else instance_destroy();}');instance_create(0,0,a);"

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

ŚWIETNY! Bardzo prosty i czytelny.

 

Chciałbym o coś dalej jeszcze spytać, ale nie wiem czy nowego tematu nie otworzyć

 

A jakbym chciał żeby poruszały się tylko w pionie i poziomie? Przy czym chciałbym żeby najpierw wybierały poziom, potem pion, poruszając się szybciej w pozimie??

Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 miesiące temu...

Sorki ze odgrzewam taki stary temat, ale wróciłem do tego projektu. Mam w związku z tym pewien problem: wiem już jak zrobić podążanie za punktem, domyślam się ze wtedy automatycznie wybierana jest jedna najkrótsza droga, ale jak zrobić żeby wybierana była NAJSZYBSZA? Jak w Heroes of Might and Magic: drogi dawały bonus do ruchu a postać poruszając się do punktu starała się iść nie najkrótszą drogą, ale właśnie drogami żeby było szybciej, jednocześnie unikając rzek, za które z kolei była kara do ruchu.

 

Myślałem by nadać każdemu elementowi odpowiednia wartość która sumowana by była i porównywana z innymi rozwiązaniami, ale nie wiem jak to zainicjować.

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ę...