Skocz do zawartości

Losowanie bez powtózenia


Matrix_

Rekomendowane odpowiedzi

Pobawiłem się trochę tymi listami, tylko nie do końca mi to działa jak trzeba. Obrazek nie pasuje mi do odpowiedzi.

Mógłby ktoś zerknąć gdzie popełniłem błąd ?

W Pliku ini obrazek jest odnosniiem do opisu znaku, czyli anserw1 to obrazek image1..

 

GML
if newtest=1{

checktext=""

choosed=0

 

 

ini_open("test.ini")

question="Co to za znak?"

count=ini_read_real('anserws','anserwcount',0)

 

var i;

for( i = 1; i <= count; i++ )

{

ds_list_add(global.list,i)}

 

ds_list_shuffle(global.list)

 

numbchoosd=irandom(4)

 

num1=ds_list_find_value(global.list,0)

num2=ds_list_find_value(global.list,1)

num3=ds_list_find_value(global.list,2)

num4=ds_list_find_value(global.list,3)

numi=ds_list_find_value(global.list,numbchoosd)

 

anserw1=ini_read_string('anserws','anserw'+string(num1),"Error")

anserw2=ini_read_string('anserws','anserw'+string(num2),"Error")

anserw3=ini_read_string('anserws','anserw'+string(num3),"Error")

anserw4=ini_read_string('anserws','anserw'+string(num4),"Error")

 

imagenumb=ini_read_real('questions','image'+string(numi),0)

 

 

goodanserw=numbchoosd

good=goodanserw

 

ini_close()

newtest=0

}

 

I plik ini:

GML
[anserws]

anserwcount=8

anserw1=Droga jednokierunkowa

anserw2=Przejscie dla pieszych

anserw[...]

 

[questions]

image1=23

image2=27

iamge[...]

Odnośnik do komentarza
Udostępnij na innych stronach

Inb4 threef rzuca miesem bo INI.

 

Laduj dane do ds_list, potem uzyj ds_list_shuffle zeby wymieszac liste. Wymieszana lista to Twoja losowa kolejnosc.

 

Cała idea tego jak próbujesz to wykonać jest słaba. Nie chce mi się pisać, więc zaczekaj na któregoś z bardziej pomocnych.

Odnośnik do komentarza
Udostępnij na innych stronach

Inb4 threef rzuca miesem bo INI.

 

Laduj dane do ds_list, potem uzyj ds_list_shuffle zeby wymieszac liste. Wymieszana lista to Twoja losowa kolejnosc.

 

Cała idea tego jak próbujesz to wykonać jest słaba. Nie chce mi się pisać, więc zaczekaj na któregoś z bardziej pomocnych.

 

Coś jak:

 

GML
count=ini_read_real('anserws','anserwcount',0);

queastions=ds_list_create()

 

int i;

for( i = 1; i <= count; i++ )

{

var t;

t=ini_read_string('anserws','anserw'+string(i),"Error")}

ds_list_add(questions, t);

t=0;

}

 

if teststart=1{

ds_list_shuffle(queastions);

 

message1=ds_list_read(questions, 1);

message2=ds_list_read(questions, 2);

message3=ds_list_read(questions, 3);

message4=ds_list_read(questions, 4);

teststart=0}

 

Pierwszy raz używam ds_list. Wcześniej jakoś tego nie potrzebowałem... Więc mogłem popełnić błąd.

 

Zrób każdy tekst w osobnym pliku INI, a po odczytaniu usuwaj plik. :unsure: Nie zapomnij sprawdzać czy plik istnieje żeby nie było błędu!

Robienie 50 plików będzie marnowało dużo czasu. Poza tym, on ma czytać przy każdym uruchomieniu apliakcji

Odnośnik do komentarza
Udostępnij na innych stronach

Pobawiłem się trochę tymi listami, tylko nie do końca mi to działa jak trzeba. Obrazek nie pasuje mi do odpowiedzi.

Mógłby ktoś zerknąć gdzie popełniłem błąd ?

 

GML
if newtest=1{

checktext=""

choosed=0

 

 

ini_open("test.ini")

question="Co to za znak?"

count=ini_read_real('anserws','anserwcount',0)

 

var i;

for( i = 1; i <= count; i++ )

{

ds_list_add(global.list,i)}

 

ds_list_shuffle(global.list)

 

numbchoosd=irandom(4)

 

num1=ds_list_find_value(global.list,0)

num2=ds_list_find_value(global.list,1)

num3=ds_list_find_value(global.list,2)

num4=ds_list_find_value(global.list,3)

numi=ds_list_find_value(global.list,numbchoosd)

 

anserw1=ini_read_string('anserws','anserw'+string(num1),"Error")

anserw2=ini_read_string('anserws','anserw'+string(num2),"Error")

anserw3=ini_read_string('anserws','anserw'+string(num3),"Error")

anserw4=ini_read_string('anserws','anserw'+string(num4),"Error")

 

imagenumb=ini_read_real('questions','image'+string(numi),0)

 

 

goodanserw=numbchoosd

good=goodanserw

 

ini_close()

newtest=0

}

 

I plik ini:

GML
[anserws]

anserwcount=8

anserw1=Droga jednokierunkowa

anserw2=Przejscie dla pieszych

anserw[...]

 

[questions]

image1=23

image2=27

iamge[...]

Odnośnik do komentarza
Udostępnij na innych stronach

Zdecydowanie w złym miejscu kończysz for. Zamykasz plik ini w każdym obrocie, goodanswerw i good nie są używane. Tzn. nadpisujesz je cały czas i nigdzie nie wyprowadzasz tych danych.

PS. Nie ważne, nie zauważyłem nawiasu po dodawaniu na listę.

PS2. Może kłopot w tym, że w kodzie numerujesz od 0 a w ini od 1.

Odnośnik do komentarza
Udostępnij na innych stronach

Zdecydowanie w złym miejscu kończysz for. Zamykasz plik ini w każdym obrocie, goodanswerw i good nie są używane. Tzn. nadpisujesz je cały czas i nigdzie nie wyprowadzasz tych danych.

PS. Nie ważne, nie zauważyłem nawiasu po dodawaniu na listę.

PS2. Może kłopot w tym, że w kodzie numerujesz od 0 a w ini od 1.

 

Problem był w tym, że gdzieś zrobiłem losowanie 3 liczb, a odpowiedzi losowały się do 4 więc dostawałem ciągle o 1+ numer odpowiedzi...

goodanserw i good, są oba używane w kodzie obok.

 

Polecam zrezygnować z INI, na rzecz formatu JSON. http://docs.yoyogames.com/source/dadiospic...son_decode.html

Answer definiuj w pliku json jako tablicę. Pobierz tablicę i użyj na niej ds_list_shuffle. Pobieranie kolejno indeksowanych wartości i++ to Twoje losowe odpowiedzi.

 

Dopiero co poznałem tablice, bo jakoś od 5 lat ich niem potrzebowałem, a pewne rzeczy zrobiłbym teraz 5 razy szybciej...

Jak w całości będę wykorzystywał ds_list, to zerknę na JSON.

Dzięki !

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