Discuss Scratch

ManuelK90
New to Scratch
1 post

Doppelte Fragen (Zufallszahlen) in einem Quiz vermeiden?

Hallo Leute,
ich habe folgendes Problem, ich bin grad dabei ein Lernspiel zu erstellen. Es handelt sich dabei um geographisches Lernspiel mit Kartenmaterial und es werden nach Bezirken gefragt. Der Spieler klickt den jeweiligen richtigen Bezirk auf der Karte an und bekommt eine weiteren Bezirk abgefragt, wenn die Antwort richtig ist.
Die Abfrage funktioniert eigentlich ganz gut, nur will ich dass die Fragen zufällig gestellt werden . Also generiere ich jeweils eine Zufallszahl zwischen 1 und 13 (gibt 13 Bezirke) nach jeder richtigen Antwort. Wie kann ich vermeiden, dass die Zufallszahl doppelt generiert wird und das die Frage dopellt gestellt wird. Ich versuchte schon die generierten Zufallszahlen in einer Liste zu speichen, aber komme gerade echt nicht weiter
Vielleicht hat jemand einen Lösungsansatz?
Liebe Grüße

Stegie1234
Scratcher
100+ posts

Doppelte Fragen (Zufallszahlen) in einem Quiz vermeiden?

Wenn die grüne Flagge angeklickt
lösche (all v) aus [fragte v]
wiederhole bis <(Länge von [fragte v] :: list) = (Länge von [fragen v] :: list)>
wiederhole bis <nicht <[fragte v] enthält (n::variables) ?>>
setze [n v] auf (Zufallszahl von (1) bis (Länge von [fragen v] :: list))
end
füge (n) zu [fragte v] hinzu
frage (Element (m) von [fragen v] :: list) und warte
end
Hilft das?

Gerald is spying on you.
KROKOBIL
Scratcher
100+ posts

Doppelte Fragen (Zufallszahlen) in einem Quiz vermeiden?

Erstelle zuerst eine Liste mit den Nummer aller Fragen:
Wenn die grüne Flagge angeklickt
lösche alles aus [Nummern v] :: list
setze [Nummer v] auf (1)
wiederhole (Länge von [Fragen v] :: list) mal
füge (Nummer) zu [Nummern v] hinzu
ändere [Nummer v] um (1)
end
Dann kannst du folgendermaßen fragen:
wiederhole bis <(Länge von [Nummern v] :: list) = (0)> // solange es noch neue Fragen gibt
setze [Nummer v] auf (Zufallszahl von (1) bis (Länge von [Nummern v] :: list)) // Index der Nummer
setze [Frage v] auf (Element (Nummer) von [Nummern v] :: list) // Nummer der Frage
lösche (Nummer) aus [Nummern v] // Löscht die Nummer, damit sie nicht nochmal gefragt werden kann
frage (Element (Frage) von [Fragen v] :: list) und warte
end

Der Ansatz von @Stegie1234 macht das, was du schon versucht hast, hat allerdings das Problem, dass vor jeder Frage eine Schleife läuft.
Um keine Verzögerung dadurch zu verursachen, könntest du diese innere Schleife in einem eigenen Block ohne Bildschirmaktualisierung laufen lassen.


Magst du in meinem Studio für deutsche Scratcher mitmachen?

Powered by DjangoBB