Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Die richtigen Antworten zählen...
PrP - Mi 14.11.07 18:29
Titel: Die richtigen Antworten zählen...
Hi,
ich mach ein leichtes 1 mal 1 Programm:
Alle 5 Sekunden steht eine neue Rechnung da, die man beantworten muss. Nach 10 Rechungen soll der Timer gestoppt werden und keine weitere Rechung mehr kommen. Soweit, so gut. Jetzt möchte ich, dass in einem Label angezeigt wird, wieoft man richtig gerechnet habe.
Ich krieg des aber nicht hin, es steht immer nur da, dass ich einmal richtig gerechnet habe und ich find den Fehler einfach nicht.
Was ich bis jetzt zusammengebracht habe:
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:
| procedure TForm1.Timer1Timer(Sender: TObject); begin randomize; z1 := Random (9) + 1; z2 := Random (9) + 1; zahl2 := z1 * z2; richtig := 0; anzahl := 0; label1.caption := 'Wieviel ist ' + IntToStr (z1) + ' mal ' + IntToStr (z2) + '?';
label2.visible := false;
end;
procedure TForm1.FormCreate(Sender: TObject); begin randomize; z1 := Random (9) + 1; z2 := Random (9) + 1; label1.caption := 'Wieviel ist ' + IntToStr (z1) + ' mal ' + IntToStr (z2) + '?';
end;
procedure TForm1.Button1Click(Sender: TObject); begin zahl1 := StrToInt (edit1.text); zahl2 := z1 * z2; if zahl1 = zahl2 then richtig := richtig + 1;
form1.Label2.visible := true; end;
procedure TForm1.Timer2Timer(Sender: TObject); begin form1.Timer1.Enabled := false;
label3.caption := 'Du hast ' + IntToStr (richtig) + ' Mal richtig geantwortet!'; end;
end. |
Danke schonmal für eure Hilfe
LG
Jann1k - Mi 14.11.07 18:45
Das Problem ist dein Timer:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Timer1Timer(Sender: TObject); begin randomize; z1 := Random (9) + 1; z2 := Random (9) + 1; zahl2 := z1 * z2; richtig := 0; anzahl := 0; label1.caption := 'Wieviel ist ' + IntToStr (z1) + ' mal ' + IntToStr (z2) + '?';
label2.visible := false;
end; |
In der markierten Zeile setzt du die Anzahl der richtig gegebenen Antworten auf 0, am Ende hast du also nur die richtige Antwort von der letzten Frage.
Moderiert von
Narses: Quote- durch Delphi-Tags ersetzt
Chryzler - Mi 14.11.07 18:47
Du setzt ja jedesmal im Timer die richtig-Variable wieder auf Null. Initialisier die Zähl-Variable doch einfach nur im OnCreate.
Abgesehen davon solltest du Randomize nur einmal beim Programmstart ausführen, also mach am besten den Aufruf im Timer1Timer raus.
PrP - Mi 14.11.07 18:53
Danke, Problem gelöst :D
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!