Wer hilft mir in C# ?

Trigger1978

Redshirt
Mitglied seit
06.02.2006
Beiträge
1
Renomée
0
Standort
Graz, Österreich
Ich habe ein Problem, ich habe in C# einen Quiz erstellt und nun möchte ich die Fragen per Zufall auswählen?

hier ist mein code:
using System;
using System.Text;

namespace myQuiz2003
{
public class myQuiz2003
{
public struct fragenStruct
{
public string frage;
public string antwort;
public int loesung;
}

public static void Main()
{

fragenStruct[] frage = new fragenStruct[6];

frage[0].frage = "Was bedeuet OOD?";
frage[0].antwort = "1.) Operative Ohrendeformation, 2.) Originale Osterdecke, 3.) Ostorientiertes Design 4.) Objektorientiertes Design";
frage[0].loesung = 4;

frage[1].frage = "Wo liegt das Betriebssystem?";
frage[1].antwort = "1.) Auf der Festplatte, 2.) In der Firma, 3.) Auf dem Boden oder 4.) Braucht man das?";
frage[1].loesung = 1;

frage[2].frage = "C# ist...";
frage[2].antwort = "1.) ein Betriebssystem, 2.) ein Spiel 3.) eine Programmiersprache 4.) eine Musikgruppe";
frage[2].loesung = 3;

frage[3].frage = "Wer gründete Microsoft?";
frage[3].antwort = "1.) Will Wates, 2.) Mike Robert Soft, 3.) Winnie Dos oder 4.) Bill Gates";
frage[3].loesung = 4;

frage[4].frage = "Gut Ding...";
frage[4].antwort = "1.) hat Eile, 2.) braucht Weile, 3.) hat keine Keime oder 4.) hat viele Teile";
frage[4].loesung = 2;

frage[5].frage = "DOS steht für...";
frage[5].antwort = "1.) Daten ohne Sinn, 2.) Denken ohne Sinn, 3.) Disk Operating System, 4.)Disk ohne System";
frage[5].loesung = 3;

Start:
int count,points,eingabeUser;
string line;

points = 0;
count= 0;

Console.WriteLine();
Console.WriteLine("--------------------------------------------------------");
Console.WriteLine("********************MY QUIZ 2003 BETA*******************");
Console.WriteLine("--------------------------------------------------------");
Console.WriteLine();
Console.WriteLine("(C)2006 Jörg Egger");
//Console.WriteLine("Heute ist der {0}!",DateTime.Now);
//Console.WriteLine();
Console.WriteLine();

Console.WriteLine("Bitte geben Sie ihren Namen ein:");
Console.WriteLine();
string name = Console.ReadLine();

Console.WriteLine();
Console.WriteLine("--------------------------------------------");
Console.WriteLine("********************START*******************");
Console.WriteLine("--------------------------------------------");
Console.WriteLine();



while (count < 6)
{
Console.WriteLine();
Console.WriteLine("============================================");
Console.WriteLine();
Console.WriteLine("FRAGE NUMMER {0}:",count+1);
Console.WriteLine();
Console.WriteLine(frage[count].frage);
Console.WriteLine();
Console.WriteLine(frage[count].antwort);
Console.WriteLine();
line = Console.ReadLine();
eingabeUser = int.Parse(line);
Console.WriteLine();

while (eingabeUser < 1 || eingabeUser > 4)
{
Console.WriteLine("{0} ist keine gültige Eingabe!",eingabeUser);
Console.WriteLine();
Console.WriteLine("Wiederholen Sie bitte ihre Eingabe!");
line = Console.ReadLine();
eingabeUser = int.Parse(line);
}

if (eingabeUser == frage[count].loesung)
{
Console.WriteLine("Super {0}, Sie haben die Frage richtig beantwortet!",name);
points++;
//Console.ReadLine();
}
else
Console.WriteLine("Schade {0}, Ihre Antwort ist leider falsch!", name);
//Console.ReadLine();

count++;
}

Console.WriteLine();
Console.WriteLine("----------------------------------------------------");
Console.WriteLine("*********************PUNKTESTAND********************");
Console.WriteLine("----------------------------------------------------");
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("----------------------------------------------------");
Console.WriteLine("Sie haben {0} Fragen richtig und {1} falsch beantwortet!", points, 6 - points);
Console.WriteLine("----------------------------------------------------");
Console.WriteLine();
Console.WriteLine("-----------------------------------");
Console.WriteLine("Ihr Punktestand beträgt {0} Punkte!",points*100);
Console.WriteLine("-----------------------------------");
Console.WriteLine();


string lineJaNein;
int ja,nein,abfrageUser;
ja = 1;
nein = 2;

Console.WriteLine("Wollen Sie noch einmal spielen?");
Console.WriteLine("Drücken Sie '1' für Ja oder '2' für Nein!");
lineJaNein = Console.ReadLine();
abfrageUser = int.Parse(lineJaNein);

while (abfrageUser < 1 || abfrageUser > 2)
{
Console.WriteLine("{0} ist keine gültige Eingabe!",abfrageUser);
Console.WriteLine();
Console.WriteLine("Drücken Sie '1' für Ja oder '2' für Nein!");
line = Console.ReadLine();
abfrageUser = int.Parse(line);
}

if (abfrageUser == ja)
goto Start;

if (abfrageUser == nein)
{
Console.WriteLine();
Console.WriteLine("Aufwiedersehen {0}!",name);
Console.ReadLine();
}
}
}
}
 
damit kein mißverständnis aufkommt, es geht letztlich darum, daß bei jedem start die fragen durcheinander gemischt sind?
 
ich kann zwar kein c#. Du musst dir halt sowas wie einen eigenen zufallgenerator bauen, da die ausgewählte frage aus den pool der fragen raus gestrichen wird.

d.h. Du erstelltst dir eine verkettete liste. Dazu musst du in der struktur noch ein pointer vom typ deiner struktur reinbauen. Dann fügst du noch eine zählervariable hinzu.

public struct fragenStruct
{
public string frage;
public string antwort;
public int loesung;
//hinzufügen
public fragenStruct *next; //pointer auf Struktur
public int zaehler; //Wird für den selbstgebauten zufalls generator benötig
}

So danach weißt du, mit hilfe einer funktion, jeder zählerVariable einen wert zu. Am besten 1,2,3,4,5,6 in deinen Fall.

Dann lässt du dir eine zufalls zahl zwischen 1 und 6 erzeugen und suchtst aus der verketteten liste das element raus wo die variable zähler den wert der zufällig erzeugten Zahl hat.

Danach lässt du die frage ausgeben und löscht diese aus der verketteten liste.

Dann musst du die nummer wieder neu vergeben. Da diesmal ein element weniger dabei ist musst du nur bis 5 zählen.

Dann lässt du dir eine zufallszahl zwischen 1 und 5 erzeugen und suchst nach der frage.

usw

irgendwann ist die liste leer und das quiz ist vorbei.

Das müsste so funktionieren. ICh weiß nicht ob es einfacher geht. ich hoffe ich konnte dir helfen.
 
Zuletzt bearbeitet:
Zurück
Oben Unten