Sim - Sa 25.01.03 12:05
Titel: Ein kleines Rateprogramm...
Habe mir mal in Delphi 3 ein kleines Rateprogramm geschrieben und habe aber ein Problem:
--------------------------------------------------------------------------------------
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: 50: 51: 52: 53: 54: 55: 56: 57: 58:
| const Max = 12; //12 Versuche hast du bereit... var Form1: TForm1; Eingabe, Zufall, Versuche: Integer; SpielEnde: Boolean;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject); begin try if SpielEnde then Close; Edit1.SetFocus; //Setfocus bedeuted dass Das Eingabefeld Edit1 beim Start automatisch angewählt wird... Eingabe := StrToInt (Edit1.Text); // := ist eine Zuweisung, Eingabe und Zufall sind Variabeln inc (Versuche); if Versuche <= Max then Label2.Caption := IntToStr (Versuche) + '. Versuch:' else Label2.Caption := 'Du hast mehr als 12 Versuche gebraucht... schlecht!'; if Eingabe = Zufall then Label1.Caption := 'Richtig geraten...'; if Eingabe < Zufall then Label1.Caption := 'Die Zahl ist grösser'; if Eingabe > Zufall then Label1.Caption := 'Die Zahl ist kleiner'; if (Eingabe = Zufall) or (Versuche > Max) then Button1.Caption := 'Ende'; begin Button1.Caption := 'Ende'; SpielEnde := true; end; except Label1.Caption := 'Nur zwischen 1 und 1000'; end;
end; procedure TForm1.FormCreate(Sender: TObject); begin randomize; Zufall := random(1000) +1; Versuche := 1; SpielEnde := false; end;
procedure TForm1.Button2Click(Sender: TObject); begin Edit1.SetFocus; Label1.Caption := 'Ich denke mir eine neue Zahl!'; Label2.Caption := 'Rate mal schön weiter!'; Button1.Caption := 'OK'; Zufall := random(1000) +1; Versuche := 1; Spielende := false; end;
end. |
--------------------------------------------------------------------------------------
Immer wenn ich den ersten Rateversuch gemacht habe wird aus dem Ok-Button, dass is der Button1.Caption ein End-Button!?!?
Warum???
Danke für die hilfe...
Moderiert von
Klabautermann: Code-Tags hizugefügt
Brueggendiek - Sa 25.01.03 14:46
Titel: Re: Ein kleines Rateprogramm...
Hallo Sim!
Willkommen im Forum!
Was soll denn das werden?
| Sim hat folgendes geschrieben: |
Quelltext 1: 2: 3: 4: 5: 6:
| if (Eingabe = Zufall) or (Versuche > Max) then Button1.Caption := 'Ende'; begin Button1.Caption := 'Ende'; SpielEnde := true; end; | |
Der begin - end - Block wird so immer durchlaufen und damit der Button umgetextet.
Vermutlich ist die erste Zeile nach dem IF - THEN flüssiger als Wasser, nämlich überflüssig!
Nach dem "then" ist genau eine Anweisung zugelassen - entweder eine Einzelanweisung oder eine mit "begin" und "end" geklammerte Verbundanweisung.
Allerdings ist es nicht verboten, irgendwo z.B. aus optischen Gründen mehrere Anweisungen zu einer Verbundanweisung zusammenzufassen - schließlich ist eine Verbundanweisung eine einzelne Anweisung und deshalb immer erlaubt, wo eine Anweisung erlaubt ist.
Gruß
Dietmar Brüggendiek