Entwickler-Ecke
Sonstiges (Delphi) - Quiz erstellen
supermann - Di 09.01.07 09:09
Titel: Quiz erstellen
Hallo!
Ich wollte aus Spass mal anfangen zu programmieren,
da ich aber bis jetzt noch gar keine Erfahrung mit Delphi habe,
wollte ich fragen, ob ihr mir da ein bissl helfen könnt...
Mein Ziel ist es ein Quiz zu erstellen (multiple choice o.ä.),
bei dem man mehrere Auswahlmöglichkeiten hat und es im Hintergrund
die richtigen Antworten zählt.
Wäre nett, wenn ihr mir helfen könntet..
Danke schon mal im vorraus!!
freedy - Di 09.01.07 10:49
Hallo!
Gute Entscheidung, dann mit Delphi anzufangen ;-).
Hier im Forum wirst du mit etwas Suchen bestimmt auf einige Ansätze stoßen. Wenn du gar keine Ahnung hast, solltest du dich vielleicht erstmal mit den Delphi-Grundlagen beschäftigen. Ohne die geht's leider nicht. Ein guter Anlaufpunkt ist da Christians
Delphi Crashkurs [
http://www.delphi-forum.de/viewtopic.php?t=37446].
Solltest du dann konkrete Fragen haben, kannst du sie hier gerne stellen.
Gruß
wurzel - Di 09.01.07 11:30
En Raetsdel hab ich auch schon gemacht, da kannste net viel falsch machen. Ich uppe mal meins. Man muss immer einen Level höher kommen, bei Lvl 1 ist das Zeichen "1", dann sit "2" die Antwort, dann kommt "III" und "IV" ist die antwort etc etc. Also immer das nächst höhere in der Schreibweise der Frage.
Der Link zu den Fragen ist
http://www.hackme.wi-ing.net/index.php. Ich habe nur diese Fragen in ein programm zusammengefasst.
supermann - Di 09.01.07 21:10
Eigentlich wollt ich eher so etwas mit multiple choice machen..
Ich hab aber leider keine Ahnung, wie ich das anstellen soll
(ihr müsst ja kein komplettes programm reinschreiben, sondern
nur einen Ausschnitt, damit ich weiß, wie ich das mit mehreren Antwortmöglichkeiten
anstellen;))
Danke!
Shorty - Di 09.01.07 21:19
Das macht man mit einer Radiogroup, bei der du dann mit einer if-Abfrage überprüfst, ob die gegebene Antwort richtig ist, wenn du das noch nicht hinbekommst, solltest du wirklich erstmal weiter Grundlagen paucken :wink:
supermann - Mi 10.01.07 01:05
und wie mach ich das, dass der die richtigen Antworten im
Hintergrund zählt?
Muss ich dann für jede Frage ne neue Form erstellen?
Saubäär - Mi 10.01.07 01:18
Hi superman,
für jede richtige Antwort inkrmentierst (erhöhst) du eine Variable z.b.
Delphi-Quelltext
1: 2: 3: 4: 5:
| var RichtigeAntworten: Integer; begin IF Antwort = richtig THEN INC(RichtigeAntworten); end; |
wurzel - Mi 10.01.07 13:15
Hab mal was geschrieben, hoffe du blickst durch.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49:
| procedure TForm1.Button1Click(Sender: TObject); begin if (counter_btn = 0) and (Radiobutton_a.Checked = True) then begin counter := counter + 100; counter_btn := counter_btn + 1; end;
if (counter_btn = 1) then begin question.Lines.Add('Sehr gut, ' + IntToStr(counter_btn) + '. Frage richtig beantwortet'); question.Lines.Add('Frage ' + IntToStr(counter_btn) +':'); question.Lines.Add('Blubb blubb bluber?'); Radiobutton_a.Caption := 'A: '; Radiobutton_b.Caption := 'B: '; Radiobutton_c.Caption := 'C: '; Radiobutton_d.Caption := 'D: '; counter_btn := counter_btn + 1; end;
if (counter_btn = 2) and (Radiobutton_b.Checked = True) then begin counter := counter + 100; counter_btn := counter_btn + 1; end;
if (counter_btn = 3) then begin question.Clear; question.Lines.Add('Sehr gut, ' + IntToStr(counter_btn -1) + '. Frage richtig beantwortet'); question.Lines.Add('Frage ' + IntToStr(counter_btn) +':'); question.Lines.Add('Blubb blubb bluber?'); Radiobutton_a.Caption := 'A: '; Radiobutton_b.Caption := 'B: '; Radiobutton_c.Caption := 'C: '; Radiobutton_d.Caption := 'D: '; counter_btn := counter_btn + 1; end;
if (counter_btn = 4) and (Radiobutton_c.Checked = True) then begin counter := counter + 100; counter_btn := counter_btn + 1; end;
end; |
In folgenden Zeilen musst du den Code immer deier Frage anpassen:
Delphi-Quelltext
1:
| if (counter_btn = 0) and (Radiobutton_a.Checked = True) then |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| question.Lines.Add('Sehr gut, ' + IntToStr(counter_btn) + '. Frage richtig beantwortet'); question.Lines.Add('Frage ' + IntToStr(counter_btn) +':'); question.Lines.Add('Blubb blubb bluber?'); Radiobutton_a.Caption := 'A: '; Radiobutton_b.Caption := 'B: '; Radiobutton_c.Caption := 'C: '; Radiobutton_d.Caption := 'D: '; |
jaenicke - Mi 10.01.07 13:41
Hier etwas ähnliches...
http://www.delphi-forum.de/viewtopic.php?t=67142#403690
Das Beispiel macht es auch mit vielen Fragen nicht mit sehr vielen Zeilen Quelltext, weil die Fragen und Antworten als Konstanten angegeben werden.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| type TQuestion = record Question: string; Answers: string; end;
const Questions: array[0..1] of TQuestion = ( (Question: 'Frage 1'; Answers: 'Antwort 1.1'#13#10'Antwort 1.2'#13#10'Antwort 1.3'), (Question: 'Frage 2'; Answers: 'Antwort 2.1'#13#10'Antwort 2.2'#13#10'Antwort 2.3')); |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| procedure TForm44.FormCreate(Sender: TObject); begin UpdateDisplay; end;
procedure TForm44.UpdateDisplay; begin rgQuestion.Caption := Questions[rgQuestion.Tag].Question; rgQuestion.Items.Text := Questions[rgQuestion.Tag].Answers; end;
procedure TForm44.btnBackClick(Sender: TObject); begin if rgQuestion.Tag > 0 then begin rgQuestion.Tag := rgQuestion.Tag - 1; UpdateDisplay; end; end;
procedure TForm44.btnNextClick(Sender: TObject); begin if rgQuestion.Tag < High(Questions) then begin rgQuestion.Tag := rgQuestion.Tag + 1; UpdateDisplay; end; end; |
Eine variable Anzahl von Antworten geht natürlich auch.
supermann - Do 11.01.07 21:09
Danke erst einmal für die Antworten, aber ich hab jetzt ein Problem:
Ich hab schon bevor ihr geantwortet habt, angefangen zu schreiben
und hab jetzt eine form, wo 3 radiobuttons drauf sind und wenn man
die jeweils Richtige angeglickt hat, erscheint in einer
neuen Form "Richtig", ansonsten falsch.
Dann kann man auf einen "weiter" button klicken und es öffnet sich eine neue
Form, wo die nä Frage drinsteht.
Da ich bei ein haufen Fragen, dann auch ein Haufen Formen machen müsste, würde das
ewig dauern..
Da ich aber leider durch den ersten Quelltext nich so richtig durchsehe (ka,
was mit question.Lines.Add gemeint ist, zeigt mir nen fehler an)
und bei dem zweiten müsste ich ja das ganze mit den Radio Buttons ändern..
Wie kann ich also am besten mein Prog ändern, ohne dass ich ein haufen
Formen nehme und nich mein ganzes geschriebenes löschen muss?
Danke!!
jaenicke - Do 11.01.07 21:23
supermann hat folgendes geschrieben: |
Wie kann ich also am besten mein Prog ändern, ohne dass ich ein haufen
Formen nehme und nich mein ganzes geschriebenes löschen muss? |
Naja, dazu müsstest du dein aktuelles Programm mal hier als Anhang posten, sonst können wir solch eine Frage nicht beantworten...
Am einfachsten wäre allerdings mein Vorschlag. Das sind ja nur die paar Zeilen, die ich in meinem Beitrag auch gepostet habe! Da fehlt ja eigentlich nur noch die Auswertung, ob eine Frage richtig oder falsch beantwortet wurde.
Dazu müsstest du ja nur den record um die korrekte Antwort erweitern:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| type TQuestion = record Question: string; Answers: string; CorrectAnswer: byte; end; |
CorrectAnswer müsstest du dann natürlich auch bei den Konstanten korrekt initialisieren.
Und damit der User nicht dauernd "Ok" klicken muss, könntest du die Auswertung der jeweils letzten Frage ja ganz oben im Formular über der nächsten anzeigen... ;-)
wurzel - Do 11.01.07 21:42
supermann hat folgendes geschrieben: |
Da ich aber leider durch den ersten Quelltext nich so richtig durchsehe (ka,
was mit question.Lines.Add gemeint ist, zeigt mir nen fehler an)
|
question.Lines.Add --> Das Memo-Feld heißt question. In diesem Schritt wird einfach nur eine neue Zeile im Memofeld geschrieben
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!