Zufallsposition für antwort in multiple choice

Hallo,

ich habe ein kleines Problem und gleichzeitig wohl einen Denkfehler.
Ich entwickle gerade ein Onlinespiel. Wesentlicher Teil des Spieles ist die Beantwortung von Fragen im multiple choice Verfahren.

Ich möchte natürlich nicht, dass bei jeder Frage, die richtige Antwort auf der selben Position steht. Logisch :smile:

Ich weiss nun nicht wie ich die Position richtig wechseln kann. Ich denke mir mal das ich alle Antworten in ein Array laden muss. Aber wie geht es nun weiter. Es gibt pro Frage IMMER nur EINE richtig Antwortmöglichkeit, diese soll halt immer nur die Position wechseln. Also mal a), mal b) usw. Jede Frage wird wärend des Spieleablaufes jeweils nur einmal angezeigt.

Wie kann ich das bewerkstelligen? Ich schätze mal mit rand() aber ich komm im Moment nicht drauf wie ich es anstellen soll.

Dank im Voraus

Gruss Michael

Kommt drauf an, wie das ganze aufgebaut ist. Bei multiple choice würde ich irgendwie aus der SQL-Tabelle folgenden Array erstellen:

$fragen = array($id, $text, $antwort[1], antwort[2], …);

…dann per

foreach($frage => $frage) {
$out[$id]="";
shuffle($frage[$antwort] and $ant);
$out[$id] .= $frage[text];
foreach $frage[$antwort] $out .= „“;
$out[$id] .= "
";
}

…einen Array mit dem text, den du ausgeben willst, erstellen. Den Text ausgeben, wie wo man ihn halt haben will… z.B. so:

foreach ($out => $o) echo $o;

und dann später muss man halt $fragen[antwort[1]] == $_POST[$id] überprüfen. (Wenn man davon ausgeht, daß im array die richtige antwort immer an erster Stelle steht.)

Puh, das is jetzt mal wieder total durcheinander, aber ich hoffe, es bringt dich irgendwie auf die richtigen Ideen.

Da ich meinen eigenen Beitrag im nachhinein selbst nicht kapier:

Schau dir einfach mal shuffle(); an. Der Rest dürfte dir dann ganz leicht zufliegen.

DANKE !! ICH HABS

Da ich meinen eigenen Beitrag im nachhinein selbst nicht
kapier:

LOL

Schau dir einfach mal shuffle(); an. Der Rest dürfte dir dann
ganz leicht zufliegen.

DANKE, ich glaube aber die Antwort schon gefunden zu haben.

Mit array_rand() sollte es klappen.

Gruss Michael