Itsuma Opublikowano 20 Maja 2014 Udostępnij Opublikowano 20 Maja 2014 Witam, w "create" obiektu, który mam rozłożony na planszy równomiernie, mam taki kod: if(irandom_range(1, 6) == 1){ instance_create(x, y, obj_kula_czerwony); } if(irandom_range(1, 6) == 2){ instance_create(x, y, obj_kula_niebieski); } if(irandom_range(1, 6) == 3){ instance_create(x, y, obj_kula_zielony); } if(irandom_range(1, 6) == 4){ instance_create(x, y, obj_kula_zolty); } if(irandom_range(1, 6) == 5){ instance_create(x, y, obj_kula_fioletowy); } if(irandom_range(1, 6) == 6){ instance_create(x, y, obj_kula_seledynowy); } który ma powodować, że w środku każdego obiektu pojawi się losowo wybrana kulka. Wszystko niby działa, ale kulki nie pojawiają się we wszystkich miejscach. Losowe miejsca zostają wolne. Co to może być? Dzięki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 20 Maja 2014 Udostępnij Opublikowano 20 Maja 2014 Zacznij używać [ gml ] do oznaczania kodu żeby był czytelniejszy. Poza tym twój kod jest bardzo feralny bo może wygenerować wszystkie 6 obiektów w jednym miejscu, bo random za każdym razem da nową liczbę. Zapisuj wylosowaną wartość do zmiennej i wtedy sprawdzaj, a najlepiej korzystaj w takich wypadkach z funkcji choose() GML r=choose(1,2,3,4,5,6); if(r == 1){ instance_create(x, y, obj_kula_czerwony); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Itsuma Opublikowano 20 Maja 2014 Autor Udostępnij Opublikowano 20 Maja 2014 Zacznij używać [ gml ] do oznaczania kodu żeby był czytelniejszy. Poza tym twój kod jest bardzo feralny bo może wygenerować wszystkie 6 obiektów w jednym miejscu, bo random za każdym razem da nową liczbę. Zapisuj wylosowaną wartość do zmiennej i wtedy sprawdzaj, a najlepiej korzystaj w takich wypadkach z funkcji choose() GMLr=choose(1,2,3,4,5,6); if(r == 1){ instance_create(x, y, obj_kula_czerwony); } Działa z "choose". Super, dzięki bardzo. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 20 Maja 2014 Udostępnij Opublikowano 20 Maja 2014 Zapoznaj się przy okazji ze strukturą switch. Warto też zastanowić się, czy te kulki mają inne właściwości? Jeżeli nie, to można użyć jednego obiektu. GML r = irandom_range(1,6) obj = -1 switch(r) { case 1: obj_kula_czerwony break; case 2: obj_kula_niebieski break; case 3: obj_kula_zielony break; ... } instance_create(x,y,obj); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ereg Opublikowano 20 Maja 2014 Udostępnij Opublikowano 20 Maja 2014 1, nietylko zrozum switch ale tez if/else if/else w pierwszym postu losujesz jesli ma byc czervwona a potem niebieska etc. naprzyklad: jesli vylosujesz czerwono to jest szansa, ze drugi los znow wylosuje zamiast czerwonej niebiesko. a TO doprowadza to do nierownego losowania kolorow, bo jest wieksza szansa na kolory pozniej losowane prawidlowo IF majo byc: GML if(irandom_range(1, 6) == 1){ instance_create(x, y, obj_kula_czerwony); } else if(irandom_range(1, 6) == 2){ instance_create(x, y, obj_kula_niebieski); } else if(irandom_range(1, 6) == 3){ instance_create(x, y, obj_kula_zielony); } else if(irandom_range(1, 6) == 4){ instance_create(x, y, obj_kula_zolty); } else if(irandom_range(1, 6) == 5){ instance_create(x, y, obj_kula_fioletowy); } else { // by zawsze byl jakis kolor. inaczej kulka niepojawi sie, bo zadna niebyla wylosowana :) instance_create(x, y, obj_kula_seledynowy); } to tylko ilustracyjny przyklad, jak uzyc if/else is/else a nie jak powinno sie programowac! 2, lepszy kod od Threef mozna uproscic do: GML instance_create(x, y, choose( obj_kula_czerwony, obj_kula_niebieski, obj_kula_zielony, obj_kula_zolty, obj_kula_fioletowy, obj_kula_seledynowy); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Itsuma Opublikowano 21 Maja 2014 Autor Udostępnij Opublikowano 21 Maja 2014 Dzięki za wszystkie odpowiedzi. Na pewno skorzystam. 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ę