mav016 hat folgendes geschrieben: |
Das Programm soll eine ZAhl zwischen 1 und 100 werfen(Random; und die Zahl soll bleiben bis sie erraten wurde bzw. erst nach die 5 Versuche erneuert wird); man hat ahnschließend 5 Versuche es zu Raten. Als Antwort sollten die Icons hoch bzw. runter sehen, je nachdem ob die Zahl niedriger oder höher ist.
Mit 2 Buttons: Nue würfeln und ENDE. |
Bei deiner Hausaufgabe solltest du mit dem einfachsten anfangen. Also einen Button (Button1) auf die Form (Form1) und Source Code zum Beenden eingeben.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.Button1Click(Sender: TObject); begin
Close;
end; |
Dann initialisierst du den Zufallszahlengenerator. Das sollte nur einmalig in deinem Programm stattfinden. Dafür bietet sich das OnCreate Ereignis von der Klasse TForm an.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.FormCreate(Sender: TObject); begin
Randomize;
end; |
Um deine Zufallszahl zu speichern, brauchst du eine globale Variable oder eine Variable die Mitglied von TForm1 ist. Außerdem brauchst du noch eine Variable die die Fehlversuche mitzählt und eine Prozedur die dir die Zufallszahl erstellt und die Variablen zurücksetzt.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| type TForm1 = class(TForm) private Zufallszahl: Integer; Fehlversuche: Integer; procedure ZufallsZahlenGenerieren; end; |
Dann brauchst du noch ein Eingabefeld (Edit1) und einen Button (Button2) der die eingegebene Zahl überprüft.
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:
| procedure TForm1.Button2Click(Sender: TObject); var Wert: Integer; FehlerNr: Integer; begin
Val(Edit1.Text, Wert, FehlerNr); if (FehlerNr <> 0) or (Wert < 1) or (Wert > 100) then begin ShowMessage('Geben Sie einen Wert zwischen 1 und 100 ein.'); Exit; end;
if Wert = Zufallszahl then begin ShowMessage('Richtig geraten'); ZufallsZahlenGenerieren; end else if Wert < Zufallszahl then begin SpeedButton1.Visible := True; SpeedButton2.Visible := False; end else begin SpeedButton1.Visible := False; SpeedButton2.Visible := True; end;
Inc(Fehlversuche); if Fehlversuche = 5 then begin ShowMessage('Sie haben 5 Fehlversuche. Es wird eine neue Zufallszahl generiert'); ZufallsZahlenGenerieren; end;
end; |
Die Prozedur um die Zufallszahl zu generieren könnte z.B. so aussehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.ZufallsZahlenGenerieren; begin
Zufallszahl := Random(99) + 1;
SpeedButton1.Visible := False; SpeedButton2.Visible := False;
Edit1.Text := '';
Fehlversuche := 0;
end; |
Und alles zusammen..
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: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;
type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Button2: TButton; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private Zufallszahl: Integer; Fehlversuche: Integer; procedure ZufallsZahlenGenerieren; public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin
Randomize;
ZufallsZahlenGenerieren;
end;
procedure TForm1.ZufallsZahlenGenerieren; begin
Zufallszahl := Random(99) + 1;
SpeedButton1.Visible := False; SpeedButton2.Visible := False;
Edit1.Text := '';
Fehlversuche := 0;
end;
procedure TForm1.Button2Click(Sender: TObject); var Wert: Integer; FehlerNr: Integer; begin
Val(Edit1.Text, Wert, FehlerNr); if (FehlerNr <> 0) or (Wert < 1) or (Wert > 100) then begin ShowMessage('Geben Sie einen Wert zwischen 1 und 100 ein.'); Exit; end;
if Wert = Zufallszahl then begin ShowMessage('Richtig geraten'); ZufallsZahlenGenerieren; end else if Wert < Zufallszahl then begin SpeedButton1.Visible := True; SpeedButton2.Visible := False; end else begin SpeedButton1.Visible := False; SpeedButton2.Visible := True; end;
Inc(Fehlversuche); if Fehlversuche = 5 then begin ShowMessage('Sie haben 5 Fehlversuche. Es wird eine neue Zufallszahl generiert'); ZufallsZahlenGenerieren; end;
end;
procedure TForm1.Button1Click(Sender: TObject); begin
Close;
end;
end. |
.