Problem bei Quiz programmieren - Antwort abfragen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
wahlberlinerin
Beiträge: 8
Registriert: Fr 19. Feb 2016, 13:40

Problem bei Quiz programmieren - Antwort abfragen

Beitrag von wahlberlinerin »

Hallo :)

Ich muss für meinen Informatikkurs ein Quiz programmieren und weiß leider nicht wie ich einbaue, dass das Programm abfragt, welcher RadioButton geklickt wurde. Dies müsste ja in einem eigenen Button ("Antwort geben") geschehen, damit es nicht direkt nach erscheinen der Frage abgefragt wird, da es ja dann dem Spieler keine Zeit zum Antworten geben würde. Somit müsste also Button übergreifend weitergegeben werden, welche Frage durch Random ausgewählt wurde, damit das Programm dann speziell zu der Frage gucken kann, ob die Antwort richtig ist.
Außerdem möchte ich, dass, wenn der Button "Nächste Frage" gedrückt wird, die Kategorie beibehalten wird. Wie verwirkliche ich das?

Code: Alles auswählen

 TForm1 = class(TForm)
    Button1: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button2: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    procedure Button11Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
  TFrage = record
    Frage: string;
    Antworten: array [0..3] of string;
    richtige_Antwort: byte;
    schonGefragt: boolean;
    Kategorie: byte;
  end;
  TFragen = array of TFrage;
 
var
  Form1: TForm1;
  Frage: TFragen;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
var a:integer;
 
procedure Add(F, a0, a1, a2, a3: string; ra,k: byte);
var l: integer;
begin
  l:= Length(Frage);
  SetLength(Frage,l + 1);
  with Frage[l] do begin
    Frage:= F;
    Antworten[0]:= a0;
    Antworten[1]:= a1;
    Antworten[2]:= a2;
    Antworten[3]:= a3;
    richtige_Antwort := ra;
    Kategorie:= k;
    end;
  end;
 
procedure TForm1.Button11Click(Sender: TObject);
begin
  Button11.Enabled:=false;
  Button1.Enabled:=false;
  Button2.Enabled:=false;
end;
 
procedure TForm1.Button5Click(Sender: TObject);        //Allgemeinwissen
begin
  Randomize;
  Button1.Enabled:=true;
  Button2.Enabled:=true;
  Button5.Enabled:=false;
  Button6.Enabled:=false;
  Button7.Enabled:=false;
  Button8.Enabled:=false;
  Button9.Enabled:=false;
  Button10.Enabled:=false;
    with Frage[random(Length(Frage))] do begin
    if (not schonGefragt) and (Kategorie=1) then
    begin
      Label1.Caption := Frage;
      RadioButton1.Caption := Antworten[0];
      RadioButton2.Caption := Antworten[1];
      RadioButton3.Caption := Antworten[2];
      RadioButton4.Caption := Antworten[3];
      schonGefragt:=True;
      end;
    end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Add('Wie heißt der Palast der englischen Königsfamilie in London?',
      'Hampton Court Palace','Tower of London','Buckingham Palace',
      'Kensington Palace',3,1);
  Add('Welche der folgenden Stätten ist keins der ursprünglichen sieben Weltwunder?',
      'Die Pyramiden von Gizeh','Die chinesische Mauer','Der Koloss von Rhodos',
      'Die hängenden Gärten von Babylon',2,1);
  Add('Wie nennt man die Bewerbungsunterlage, mit der sich Models bei Agenturen präsentieren?',
      'Setcard','Sedcard','Redcard','Zetcard',2,1);
  Add('Welche Aufgabe musste Sisyphos in der griechischen Mythologie immer wieder erfüllen?',
      'Wasser in einem löchrigen Krug transportieren','Unter Hunger Früchte ernten, wobei er diese nicht essen durfte',
      'Gegen einen unbesiegbaren Stier kämpfen','Einen Felsbrocken einen Hang hinaufrollen',4,1);
  Add('Welches der folgenden deutschen Bauwerke gehört nicht zum UNESCO-Weltkulturerbe?',
      'Zeche Zollverein in Essen','Kölner Dom','Museumsinsel Berlin','Schloss Neuschwanstein in Bayern',4,1);
  Add('Was ist keine Tempoangabe in der Musik?','Allegrettimo','Prestissimo','Allegro','Adagio',1,1);
end;
 
end.                     

Antworten