Skocz do zawartości

Losowanie liczby a nastepnie towrzenie objektu.


bobo

Rekomendowane odpowiedzi

Mam sobie taki skrypt w obj_losuj w evencie left buton:

obj=random(49)
switch (obj)
{
case 1: instance_create(32,45,obj_liczba1) break;
case 2: instance_create(32,45,obj_liczba2) break;
case 3: instance_create(32,45,obj_liczba3) break;
case 4: instance_create(32,45,obj_liczba4) break;
case 5: instance_create(32,45,obj_liczba5) break;
case 6: instance_create(32,45,obj_liczba6) break;
case 7: instance_create(32,45,obj_liczba7) break;
case 8: instance_create(32,45,obj_liczba8) break;
case 9: instance_create(32,45,obj_liczba9) break;
case 10: instance_create(32,45,obj_liczba10) break;
case 11: instance_create(32,45,obj_liczba11) break;
case 12: instance_create(32,45,obj_liczba12) break;
case 13: instance_create(32,45,obj_liczba13) break;
case 14: instance_create(32,45,obj_liczba14) break;
case 15: instance_create(32,45,obj_liczba15) break;
case 16: instance_create(32,45,obj_liczba16) break;
case 17: instance_create(32,45,obj_liczba17) break;
case 18: instance_create(32,45,obj_liczba18) break;
case 19: instance_create(32,45,obj_liczba19) break;
case 20: instance_create(32,45,obj_liczba20) break;
case 21: instance_create(32,45,obj_liczba21) break;
case 22: instance_create(32,45,obj_liczba22) break;
case 23: instance_create(32,45,obj_liczba23) break;
case 24: instance_create(32,45,obj_liczba24) break;
case 25: instance_create(32,45,obj_liczba25) break;
case 26: instance_create(32,45,obj_liczba26) break;
case 27: instance_create(32,45,obj_liczba27) break;
case 28: instance_create(32,45,obj_liczba28) break;
case 29: instance_create(32,45,obj_liczba29) break;
case 30: instance_create(32,45,obj_liczba30) break;
case 31: instance_create(32,45,obj_liczba31) break;
case 32: instance_create(32,45,obj_liczba32) break;
case 33: instance_create(32,45,obj_liczba33) break;
case 34: instance_create(32,45,obj_liczba34) break;
case 35: instance_create(32,45,obj_liczba35) break;
case 36: instance_create(32,45,obj_liczba36) break;
case 37: instance_create(32,45,obj_liczba37) break;
case 38: instance_create(32,45,obj_liczba38) break;
case 39: instance_create(32,45,obj_liczba39) break;
case 40: instance_create(32,45,obj_liczba40) break;
case 41: instance_create(32,45,obj_liczba41) break;
case 42: instance_create(32,45,obj_liczba42) break;
case 43: instance_create(32,45,obj_liczba43) break;
case 44: instance_create(32,45,obj_liczba44) break;
case 45: instance_create(32,45,obj_liczba45) break;
case 46: instance_create(32,45,obj_liczba46) break;
case 47: instance_create(32,45,obj_liczba47) break;
case 48: instance_create(32,45,obj_liczba48) break;
case 49: instance_create(32,45,obj_liczba49) break;
default: room_restart();
}

Z tego skryptu wynika że jak kliknie sie na obj_losuj to GM losuje liczbe z przedziału 1-49, a nastepnie wynik tego losowania zapisuje do zmiennej obj.

Potem wzależności jaka jest wartość zmiennej obj. taki obj_liczba jest tworzony w roomie np. jeżeli obj=3 utworzy się obj_liczba3 itd. Lecz to jest tylko teoria w praktyce to nie działa może mi ktoś wyjaśnić czemu?

Odnośnik do komentarza
Udostępnij na innych stronach

Tak samo jak probowalem zrobic ze skryptem

text=get_string('pytanie',0)

Powinno zapisywac, ale nie zapisywalo, wyskakiwalo uknown variable ...

Nie mam pojecia czemu takiego typu skrypty odmawiaja wspolpracy :]

Odnośnik do komentarza
Udostępnij na innych stronach

Po pierwsze, jeśli chcesz losować w przedziale 1-49, użyj instrukcji (random(49)+1)Po drugie, zauważ, iż może zostać wylosowana każda liczba z przedziału 1-49, np.26,3. Aby temu zaradzić, musisz zaokrąglić wynik do rzędu jedności. Czyli poprawiona linijka wygląda tak:

obj=round((random(49)+1))

Odnośnik do komentarza
Udostępnij na innych stronach

Jasne:

var n; - Ustawiamy 'n' jako tymczasową.

n = round((random(49)+1)); - Generujemy losową liczbę od 1 do 50 (bo random(49)+1=max 50) i zapisujemy ją do zmiennej 'n'.

execute_string('instance_create(32,45,obj_liczba'+string(n)+')'); - Wykonujemy kod za pomocą funkcji 'execute_string'. Kod powinien być podany w stringu.

 

Efekt? Zostanie wykonany kod 'instance_create(32,45,obj_liczbaX)' (tam gdzie X - wartość zmiennej n) :)

Odnośnik do komentarza
Udostępnij na innych stronach

A czemu to wszytsko w nawiasie jest w ' '? I co powoduje funkcja execute_string();?

 

Czemu w nawiasie? Ponieważ każdy string zaczyna się i kończy cudzysłowiami lub apostrofami:

 

tekst='to jest tekst'

 

Funkcja execute_string wykonuje polecenie zapisane w stringu.

 

funkcja='draw_text(x,y,tekst)'

 

Sam tekst nic nie zdziała, ale dzięki tej funkcji możemy ją "przekompilować" na kod.

 

execute_string(funkcja)

 

I ten oto skrypcik będzie rysować jakiś tam tekst (wykona funkcję draw_text(x,y,tekst)).

 

Mam nadzieję, że zrozumiałeś.

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