Versuchen wir doch erstmal strukturiert ran zu gehen.
Für ein Quiz spiel benötigst du einen Container an Fragen, eine Frage besteht aus dem Fragetext, mehreren Antworten, von der natürlich eine richtig sein muss.
In C++ terms bedeutet das du willst eine art von Objekt haben das die Information der Fragen beinhaltet, sowie eine art Container um die fragen zu halten. Aktuell machst du beides mit einem zweidimensionalen Array. Das ist zum einen unleserlich und aufwendig. Mein Tipp ist, erstelle einen eigenen Typen für Fragen (Stuct/Class), und benutz einen Container (std::set, std::vector) für den Fragenkatalog.
Wenn du eine frage stellst, printest du die Fragestellung sowie die möglichen antworten aus, und liest vom user dann eine zahl ein. Wenn die Zahl = index der richtigen antwort (auf dem screen) ist, bekommt der Spieler die nächste frage, wenn nicht hat er das spiel verloren.
Die fragen solle ja zufällig auftreten, da gibt es verschiedene Optionen, z.B. kannst du die Fragen einfach in einem vector speichern, und die nächste frage mit rand() auswählen, und diese dann löschen. Persönlich finde ich das aber recht ugly da Vector elemt löschen langsam ist (O(n)).
Die etwas kompliziertere lösung die ich machen würde, ich würde den Fragen eine Zufallszahl zuordnen, und sie dann nach dieser sortiert in einem std::set lagern (indem man std::less für den Fragen typen spezialisiert) und dann immer das erste element entfernen. gibt bestimmt noch effizientere Methoden (std::set basiert auf nem RBT in den meisten implementationen, was hohe statische kosten hat), aber dir würde ich eh das mit dem vector empfehlen, da ich glaube das es für dich völlig ausreicht.
Also mal als pseudo code:
Code:
Frage {
-- Daten
Text;
Antworten;
-- Methoden
FrageStellen {
Print (Text);
Print (Antworten);
Read (UserAntwort);
if (UserAntwort == RichtigeAntwort) return true;
return false;
}
}
Liste<Frage> Fragen = {
Frage(Frage1, A1, A2, A3, A4),
Frage(Frage2, A1, A2, A3, A4),
...
Frage(FrageN, A1, A2, A3, A4),
}
Main {
While (Fragen not empty) {
AktuelleFrage = Fragen[Random]
Fragen.delete(AktuelleFrage);
if (AktuelleFrage.FrageStellen ist Falsch) Veloren;
}
Gewonnen
}