Owex Opublikowano 16 Marca 2011 Udostępnij Opublikowano 16 Marca 2011 Witam. Jak zrobić aby po kolizji obj1 z obj2 była losowana 1z np. 5akcji, a później przy ponownej kolizji (np. jeśli zrobię kilka obj2. w jednym roomie) znowu było losowane, ale wykluczając akcję, która była już użyta? Ewentualnie może być bez wykluczania jeśli jest to niemożliwe. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mentoss Opublikowano 16 Marca 2011 Udostępnij Opublikowano 16 Marca 2011 GML zmienna=irandom(ilosc_akcji-1) switch zmienna { case 0: /* akcja 1 */; break; case 1: /* akcja 2 */; break; //(...) } lub: GML execute_string(choose('/*akcja1*/','/*akcja2*/','/*itd. do 16 opcji*/')) takie dwa łatwe dość. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 16 Marca 2011 Administratorzy Udostępnij Opublikowano 16 Marca 2011 Bez wykluczenia to bardzo proste: GML var akcja; akcja = irandom_range(1,5); switch (akcja) { case 1: <costam>; break; case 2: <costam>; break; ... case 5: <costam>; break; } A z wykluczaniem: GML (CREATE) ostatnia = -1; GML (KOLIZJA) var akcja; do { akcja = irandom_range(1,5); } until (akcja != ostatnia); ostatnia = akcja; switch (akcja) { case 1: <costam>; break; case 2: <costam>; break; ... case 5: <costam>; break; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mentoss Opublikowano 16 Marca 2011 Udostępnij Opublikowano 16 Marca 2011 o racja. Nie doczytałem o tym wykluczaniu Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Owex Opublikowano 16 Marca 2011 Autor Udostępnij Opublikowano 16 Marca 2011 Sposób Mentossa działa, ale nie wyklucza akcji, a kiedy odpalam sposób gnyseka, przy kolizji gra się wiesza i trzeba wyłączać przez alt+crtl+delete. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 16 Marca 2011 Administratorzy Udostępnij Opublikowano 16 Marca 2011 Przepraszam, pomyliłem do until z do...while z innych języków. Poprawnie jest z negacją (poprawiłem też cały kod w poprzednim poście): GML until (akcja != ostatnia); Btw. nie wiem jak odmieniasz słowo "kotek", ale wydaje mi się, że nie "koteka", tylko "kotka", zatem wypadało by napisać "gnyska". Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Shockah Opublikowano 16 Marca 2011 Udostępnij Opublikowano 16 Marca 2011 Ewentualnie wykluczanie można zrobić na ds_list. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 18 Marca 2011 Udostępnij Opublikowano 18 Marca 2011 A z wykluczaniem: GML (CREATE) ostatnia = -1; GML (KOLIZJA) var akcja; do { akcja = irandom_range(1,5); } until (akcja != ostatnia); ostatnia = akcja; switch (akcja) { case 1: <costam>; break; case 2: <costam>; break; ... case 5: <costam>; break; } Z tym że ten kod wyklucza tylko ostatnią akcję. Dla wykonania wszystkich przykładowych 5-ciu akcji bez powtórzeń lepiej to wpakować do tablicy lub ds_list. Wygodniej będzie użyć ds_list bo łatwiej sprawdzać czy istnieje w tablicy wylosowana wartość (ds_list_find_index(id,val) Find the position storing the indicated value. If the value is not in the list -1 is returned). 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ę