Ich bin neu im Forum. Männlich, 57 Jahre alt und habe außer mit Borland Pascal, gefühlt seit Jahrhunderten, nichts mit Programieren am Hut gehabt. Und das auch nur just for fun. Jetzt versuche ich mir Pascal/Lazarus beizubringen. Dazu arbeite ich den Wiki http://wikis.zum.de/zum/Lazarus-Buch durch. Jetzt hänge ich seit Tagen an dem Projekt "Rechentrainer" im Kapitel "Spielen mit dem Zufall" fest. Wenn das zu sehr Basics sind um hier darauf einzugehen, dann sagt es mir.
Problem: Ich versuche mehrere Prozeduren innerhalb der Prozedur "TForm1.Button2Click" der Reihenfolge nach abzuarbeiten. Dabei sollten zunächst zufällige Aufgaben generiert werden, danach eine Aufgabe gebaut und diese dann ausgegeben werden. Danach soll die Eingabe von "Edit1.Text" geholt und mit dem Ergebnis verglichen werden. Danach folgt die Ausgabe "Falsch/Richtig". Nur ist es bei meinem Program leider so, daß immer das Ergebnis der nächsten Frage mit der aktuellen Antwort verglichen wird. Ich finde den Wurm nicht. Wenn mir da jemand helfen könnte, muss kein Lösungsweg sein. Mich auf meinen Denkfehler zu stoßen, reicht vielleicht schon. Ich füge mal den Programmcode ein.
Code: Alles auswählen
{ public declarations }
procedure Zufallszahlen_generieren;
procedure Aufgabe_stellen;
procedure Antwort_holen;
procedure Ergebnis_rechnen;
procedure Antwort_geben;
end;
var
Form1: TForm1;
Wert1:integer;
Wert2:integer;
Aufgabe:string;
Antwort:integer;
Rechenzeichen:string;
Zufallsvorzeichenzahl:integer;
Ergebnis:integer;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Zufallszahlen_generieren;
Aufgabe_stellen;
Ergebnis_rechnen;
Antwort_holen;
Antwort_geben;
end;
procedure TForm1.Zufallszahlen_generieren;
begin
Wert1:=Random(100);
Wert2:=Random(100);
end;
procedure TForm1.Aufgabe_stellen;
begin
Zufallsvorzeichenzahl:=Random(2);
Case Zufallsvorzeichenzahl of
0:Rechenzeichen:='+';
1:Rechenzeichen:='-';
end;
Aufgabe:=IntToStr(Wert1)+Rechenzeichen+IntToStr(Wert2);
Label2.Caption:=Aufgabe;
end;
procedure TForm1.Antwort_holen;
Begin
Antwort:=StrToInt(Edit1.Text);
end;
procedure TForm1.Ergebnis_rechnen;
Begin
Case Zufallsvorzeichenzahl of
0:Ergebnis:=Wert1+Wert2;
1:Ergebnis:=Wert2-Wert2;
end;
end;
procedure TForm1.Antwort_geben;
begin
if Antwort<>Ergebnis
then label3.Caption:='Falsch!'
else label3.Caption:='Richtig!';
end;
end.