Entwickler-Ecke
Sonstiges (Delphi) - Zahlenraten
mav016 - So 25.09.05 12:06
Titel: Zahlenraten
Hallo erstmal!
Das ist mein erster Tread bei euch und hoffe Ihr könnt mir helfen.
Und zwar müssen wir als Hü ein Programm zusammenstellen!Mit Delphi!!
Das Programm lautet 'Zahlenraten'!!!
Und zwar:
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.
Könnt Ihr mir bitte helfen bei diesem Programm
M.f.g
PLuS - So 25.09.05 12:10
Wo liegt denn genau dein Problem?
Poste doch mal ein wenig Code, oder erwartest du, dass jetzt hier jemand deine Hausaufgaben macht?
MfG
PLuS
mav016 - So 25.09.05 12:11
NEIN das nicht!!!
Ok werde ich gleich mal machen!!
M.f.g
PLuS - So 25.09.05 12:29
Wofür ist der Ende-Button?
Ich würde statt dem, lieber einen "Raten-Button" nehmen, auf den geklickt wird, um eine Zahl zu erraten!
Code ungetestet:
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: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55:
| var Zahl, Zaehler: integer;
...
procedure Neu_Wuerfeln; begin Zahl:=Random(100)+1; Zaehler:=0; Form1.Label1.Caption:='Noch '+inttostr(5 - Zaehler)+' Versuche!'; end;
procedure TForm1.Button1Click(Sender: TObject); begin Neu_Wuerfeln; end;
procedure TForm1.Button3Click(Sender: TObject); begin if not(Zaehler = 4) then begin if strtoint(Edit1.Text) = Zahl then begin showmessage('Zahl erraten!'); Neu_Wuerfeln; end else begin if strtoint(Edit1.Text) > Zahl then begin SpeedButton1.Visible:=true; SpeedButton2.Visible:=false; end else begin SpeedButton1.Visible:=false; SpeedButton2.Visible:=true; end; inc(Zaehler); Label1.Caption:='Noch '+inttostr(5 - Zaehler)+' Versuche!'; end; end else begin showmessage('Zahl war '+inttostr(Zahl)); Neu_Wuerfeln; end; Edit1.Text:='';
end;
procedure TForm1.FormCreate(Sender: TObject); begin Neu_Wuerfeln; end; |
MfG
PLuS
mav016 - So 25.09.05 12:30
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: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons;
type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; Button2: TButton; Panel1: TPanel; Label1: TLabel; Label2: TLabel; Edit2: TEdit; Edit3: TEdit; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); Var zahl:integer; begin
randomize; For zahl:=1 to random(19)+1 do randomize;
showmessage(inttostr(zahl));
If strtoint(edit1.Text)<zahl then speedbutton1.Visible:=true; If strtoint(edit1.Text)>zahl then speedbutton2.Visible:=true;
end;
procedure TForm1.Button2Click(Sender: TObject); begin close; end;
end. |
Könntet ihr mir weiter helfen!!!
Mein erstes Problem ist das er ständig die zufahlszahlen ändert!
Mein zweites Problem ist z.b.: die Zahl 5 gebe ich ein und die Zufahlszahl lautet 25, dann kommt das Speedbuttonzeichen mit hoch; dann gebe ich 30(aber die Zufahlszahl ist dan nicht mehr 25 sondern eine andere; das Problime sollte gelöst werden das die erste Zufahlszahl bleiben soll) ein und dann kommt dann runter wobei aber hoch noch auf visible:=true ist!!
Das ENDE Button dient zum Programm beenden!!
Danke das du mir Hilfst!!! :D :D :D
Ich kenn mich da nicht aus mit Procedure Neu Würfeln(meinst du dne Motton Neu Würfeln.CLick)??
Bitte
M.f.g
Moderiert von
Christian S.: Delphi-Tags hinzugefügt.
Moderiert von
Christian S.: Beiträge zusammengefastt
Sprint - So 25.09.05 13:31
Titel: Re: Zahlenraten
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.
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:
| 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..
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: 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. |
mav016 - So 25.09.05 13:40
Danke ich habe es schon geschafft!!
Ich habe es jetzt kapiert wie es geht und auch verstanden!!
Ich danke euch vielmals!!
M.f.g
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!