Autor Beitrag
supermann
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 09.01.07 09:09 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 403
Erhaltene Danke: 1

Winows 7
Delphi XE
BeitragVerfasst: 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.

Solltest du dann konkrete Fragen haben, kannst du sie hier gerne stellen.

Gruß
wurzel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 75

Win 2000, Win XP
BDS 2006 (Delphi, Delphi .NET, C++)
BeitragVerfasst: 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 www.hackme.wi-ing.net/index.php. Ich habe nur diese Fragen in ein programm zusammengefasst.
Einloggen, um Attachments anzusehen!
_________________
"Könntest du deinen Egotrip mal kurz unterbrechen? Es ist was wichtiges passiert." - "Wenn es irgendwas wichtigeres als mein Ego gibt, verlange ich, dass man es auf der Stelle verhaftet und erschießt."
supermann Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 107

Win XP, Ubuntu 8.04
Delphi 7 Prof., Delphi 2005 Pers.
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 376



BeitragVerfasst: Mi 10.01.07 01:18 
Hi superman,

für jede richtige Antwort inkrmentierst (erhöhst) du eine Variable z.b.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var RichtigeAntworten: Integer;
begin
  IF Antwort = richtig THEN // Da muss natürlich eine gültige Bedingung rein.
   INC(RichtigeAntworten);
end;
wurzel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 75

Win 2000, Win XP
BDS 2006 (Delphi, Delphi .NET, C++)
BeitragVerfasst: Mi 10.01.07 13:15 
Hab mal was geschrieben, hoffe du blickst durch.

ausblenden volle Höhe 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 = 0and (Radiobutton_a.Checked = True)  then    //Wenn Buttoncounter 0 und RadioButton_a aktiv ist, dann...
    begin
          counter := counter + 100;             //Geldcounter wird um 100 erhöht
          counter_btn := counter_btn + 1;       //Buttoncounter wird um 1 erhöht
    end;


  if (counter_btn = 1then
    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 = 2and (Radiobutton_b.Checked = True)  then
    begin
          counter := counter + 100;
          counter_btn := counter_btn + 1;
    end;

{Ab hier Copy&Paste, du musst nur die Fragen und Antworten verändern}

  if (counter_btn = 3then
    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 = 4and (Radiobutton_c.Checked = True)  then
    begin
          counter := counter + 100;
          counter_btn := counter_btn + 1;
    end;
{Bis hier Copy&Paste}
end;


In folgenden Zeilen musst du den Code immer deier Frage anpassen:

ausblenden Delphi-Quelltext
1:
  if (counter_btn = 0and (Radiobutton_a.Checked = True)  then					


ausblenden 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: ';

_________________
"Könntest du deinen Egotrip mal kurz unterbrechen? Es ist was wichtiges passiert." - "Wenn es irgendwas wichtigeres als mein Ego gibt, verlange ich, dass man es auf der Stelle verhaftet und erschießt."
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 10.01.07 13:41 
Hier etwas ähnliches... www.delphi-forum.de/...c.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.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
type
  TQuestion = record
    Question: string;
    Answers: string;
  end;

const
  Questions: array[0..1of 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'));

ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 11.01.07 21:23 
user profile iconsupermann 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 75

Win 2000, Win XP
BDS 2006 (Delphi, Delphi .NET, C++)
BeitragVerfasst: Do 11.01.07 21:42 
user profile iconsupermann 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

_________________
"Könntest du deinen Egotrip mal kurz unterbrechen? Es ist was wichtiges passiert." - "Wenn es irgendwas wichtigeres als mein Ego gibt, verlange ich, dass man es auf der Stelle verhaftet und erschießt."