Skocz do zawartości
WojtekO

"create random" Jak zrobić 5 obiektów?

Rekomendowane odpowiedzi

Witam!

W GM jest dostępna funkcja "create random", lecz niestety, pozwala na utworzenie tylko 4 obiektów. A ja potrzebuję, by po naciśnięciu na guzik, pojawiło się ich 5.

Jak to zrobić?

|Pozdrawiam

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Heh, poczytaj lepiej o gml, bo na klockach nauczysz się tyle czego i tak od nowa w gmLu sie uczyć bedziesz.

póki co w odpowiednim miejscu daj "execute code" i tam wklej:

GML
instance_create(x,y,obiekt)

wklej tyle razy ile potrzeba za obiekt podstawiając nazwe obiektyu. ;)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

aha sorry, nie kojarzyłem funkcji klocka. więc zrób tak:

GML
//w evencie create 'execute code'

rodzaj[0]=nazwaobjektu1;

rodzaj[1]=nazwaobiektu2;

...

rodzaj[n-1]=nazwaobiektun;

//to tylko taki wzór dopasuj do swoich potrzeb

//to poniżej daj tam gdzie chcesz tworzyć obiekty

los=round(random(n));

instance_create(x,y,rodzaj[los]);

 

PS> pisane z pamięci.

 

@UP: Można i tak :D

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

to juz lepiej zrobic

GML
switch(floor(random(xxxxxx)))// mozna walnac choose, np: choose(0,0,0,0,1,1,2) tak by pozycja 0 trafiala sie czesto a 2 raz na jakis czas

{

case 0:{instance_create(x,y,ob1);break;}

case 1:{instance_create(x,y,ob1);break;}

case 2:{instance_create(x,y,ob1);break;}

case 3:{instance_create(x,y,ob1);break;}

case 4:{instance_create(x,y,ob1);break;}

case 5:{instance_create(x,y,ob1);break;}

case 6:{instance_create(x,y,ob1);break;}

case 7:{instance_create(x,y,ob1);break;}

....

}

 

ctrl+c i ctrl+v

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Źle. Wtedy 1 i ostatni obiekt mają 2x mniejsze szanse na pojawienie się niż te ze środka.

A jak już się bawimy tak, to jak dla mnie lepiej:

 

GML
list = ds_list_create(); //Tworzymy liste obiektow, ktore mozna wylosowac

ds_list_add(list, obiekt1); //Dodajemy do listy wsyztskie potrzebne nam obiekty

ds_list_add(list, obiekt2);

ds_list_add(list, obiekt3);

ds_list_add(list, obiektn);

 

ds_list_shuffle(list); //"przetasowujemy" liste - wszystkie pozycje w niej beda sie znajdowaly na losowych pozycjach

instance_create(x, y, ds_list_find_value(list, 0)); //ds_list_find_value(list, 0) - ta funckja pobieramy pierwsza pozycje z naszej listy obiektow (a, ze jest ona juz przetasowana, to w praktyce pobieramy losowa jej pozycje)</span></span>

 

Lepiej normalnie losując, ale tak (wydaje mi się przynajmniej, lol) łatwiej będzie to zrozumieć Wojtkowi... ^_^

A i nauczy się czegoś przy okazji (tzn. mam nadzieję =d)

 

Ed: I jeszcze jedna wersja :P

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

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

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×