Skocz do zawartości

Losowanie


Owex

Rekomendowane odpowiedzi

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

  • Administratorzy

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

  • Administratorzy

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

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

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