Autor Beitrag
PrP
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 14.11.07 18:29 
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:

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:
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Mi 14.11.07 18:45 
Das Problem ist dein Timer:

ausblenden 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;  //<- diese Zeile
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 user profile iconNarses: Quote- durch Delphi-Tags ersetzt
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



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



BeitragVerfasst: Mi 14.11.07 18:53 
Danke, Problem gelöst :D