Skocz do zawartości
Rafep

Niedziałająca funkcja na losowanie liczb

Rekomendowane odpowiedzi

Cześć! Ostatnio użyłem w mojej grze funkcji:

irandom_range(0, 15);

Tylko, że wynik zawsze jest równy 0. :(

Próbowałem też użyć na początku kodu funkcji:

randomize();

ale też nie działa... Wie ktoś jak to naprawić?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jaką wersję GameMakera używasz? Bodajże wersja 1.4 miała jakieś problemy z losowaniem liczb. Może ktoś bardziej obeznany wie coś więcej na ten temat.

 

PS. Funkcję randomize(); musisz wywołać tylko raz, może w create jakiegoś obiektu?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Tak, używam wersji właśnie GM:S 1.4.

A funkcji randomize(); używam właśnie w create obiektu.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Proszę:

if global.generator = true
{
    generator = false;
    
    if distance_to_object(obj_biom_pustynia) < 500
    {
        los = irandom_range(0, 4);
        
        if los < 4
        {
            if pustynia > 0
            {
                instance_create(x, y, obj_biom_pustynia);
                pustynia -= 1;
                generator = true;
            }
        }
    }
    
    if generator != false
    {
        los = irandom_range(0, 15);
        
        if los < 15
        {
            instance_create(x, y, obj_biom_trawa);
            pustynia += 1;
        }
        
        if los = 15
        {
            if pustynia > 0
            {
                instance_create(x, y, obj_biom_pustynia);
                pustynia += 1;
            }
            else
            {
                instance_create(x, y, obj_biom_trawa);
                pustynia += 1;
            }
        }
    }
    
    instance_create(x, y, obj_biom_trawa);
    
    x += pixels_beetween_biomes;
    
    if x > room_width / pixels_beetween_biomes * pixels_beetween_biomes
    {
        if y > room_height / pixels_beetween_biomes * pixels_beetween_biomes
        {
            global.generator = false;
        }
        else
        {
            y += pixels_beetween_biomes;
            x = pixels_beetween_biomes;
        }
    }
}

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Well, nie mam pojęcia, wszystko wygląda ok. Możesz spróbować zapisać to inaczej. Może coś się koliduje z poprzednim los = irandom_range(0, 4);
 

var _los = irandom_range(0, 15);

if(_los < 15)
{
	instance_create(x, y, obj_biom_trawa);
	pustynia += 1;             
}

Możesz jeszcze spróbować zrestartować gm'a :V 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

W dokumentacji jest opisane, że jak testujesz grę, to zawsze ziarno jest ustawiane na takie samo, zeby łatwiej było debugować.

 

Musisz dać randomize() w create i powinno działać.

 

Oczywiście, zamiast testować swój długi kod, wystarczy

 

randomize();
show_debug_message(irandom_range(0,12));

 

I odpalić grę parę razy dla pewności. Jak będą inne, to wszystko działa.

 

Btw, sprawdź czy używasz wersji 1.4.9999 - ale pamiętaj, że GMS 1.4 nie jest już wspierany od niemal roku.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Tak nie w temacie losowości to dostrzegłem tutaj błąd logiczny że blok:

 if generator != false
    {
        los = irandom_range(0, 15);
        
        if los < 15
        {
            instance_create(x, y, obj_biom_trawa);
            pustynia += 1;
        }
        
        if los = 15
        {
            if pustynia > 0
            {
                instance_create(x, y, obj_biom_pustynia);
                pustynia += 1;
            }
            else
            {
                instance_create(x, y, obj_biom_trawa);
                pustynia += 1;
            }
        }
    }

 

Nigdy się nie wykona bo wyżej zawsze ustawiasz generator = false

  • Lubię (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

@I am Lord Ty.

Faktycznie xD Właśnie odkryłem jak głupi jestem. :P 

@gnysek Mam GM:S 1.4.1804. Dlaczego? Bo nie wiem gdzie pobrać 1.4.9999. Serio. Gdzie można to pobrać?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Przejdź na kanał beta w zasobniku przy zgearze, na ikonie GMS.

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

×