Autor Beitrag
mav016
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30

Win XP SP2

BeitragVerfasst: So 25.09.05 12:06 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 98

Win XP, Suse Linux 9.0
D5 Standard, D2005 Personal; Perl; PureBasic
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30

Win XP SP2

BeitragVerfasst: So 25.09.05 12:11 
NEIN das nicht!!!


Ok werde ich gleich mal machen!!

M.f.g
PLuS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 98

Win XP, Suse Linux 9.0
D5 Standard, D2005 Personal; Perl; PureBasic
BeitragVerfasst: 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:
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:
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
     //Raten
     if not(Zaehler = 4then
     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; //Neu würfeln
     end;
     Edit1.Text:='';

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
     Neu_Wuerfeln;
end;


MfG
PLuS

_________________
Der letzte macht die Tür zu!


Zuletzt bearbeitet von PLuS am So 25.09.05 12:36, insgesamt 2-mal bearbeitet
mav016 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30

Win XP SP2

BeitragVerfasst: So 25.09.05 12:30 
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:
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
    { Private declarations }
  public
    { Public declarations }
  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 user profile iconChristian S.: Delphi-Tags hinzugefügt.
Moderiert von user profile iconChristian S.: Beiträge zusammengefastt
Sprint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 849



BeitragVerfasst: So 25.09.05 13:31 
user profile iconmav016 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.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
begin

  // Programm beenden
  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.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.FormCreate(Sender: TObject);
begin

  // Zufallszahlengenerator initialisieren
  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.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
type
  TForm1 = class(TForm)
  {...}
  private
    { Private-Deklarationen }
    Zufallszahl: Integer;
    Fehlversuche: Integer;
    procedure ZufallsZahlenGenerieren;
  {...}
  end;

Dann brauchst du noch ein Eingabefeld (Edit1) und einen Button (Button2) der die eingegebene Zahl überprüft.
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:
procedure TForm1.Button2Click(Sender: TObject);
var
  Wert: Integer;
  FehlerNr: Integer;
begin

  // eingegebenen Wert von Edit1 in eine Ganzzahl umwandeln
  // und prüfen ob Wert zwischen 1 und 100 liegt
  Val(Edit1.Text, Wert, FehlerNr);
  if (FehlerNr <> 0or (Wert < 1or (Wert > 100then
  begin
    ShowMessage('Geben Sie einen Wert zwischen 1 und 100 ein.');
    Exit;
  end;

  // ist Wert gleich Zufallszahl?
  // wenn nicht, dann Anzeige über SpeedButton ob Zahl kleiner oder größer ist
  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;

  // Fehlversuche mitzählen und prüfen ob Höchstwert erreicht worden ist
  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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.ZufallsZahlenGenerieren;
begin

  // Zufallszahl generieren
  Zufallszahl := Random(99) + 1;

  // SpeedButton ausblenden
  SpeedButton1.Visible := False;
  SpeedButton2.Visible := False;

  // Eingabefeld leeren
  Edit1.Text := '';

  // Zähler für Fehlversuche zurücksetzen
  Fehlversuche := 0;

end;


Und alles zusammen..
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:
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
    { Private-Deklarationen }
    Zufallszahl: Integer;
    Fehlversuche: Integer;
    procedure ZufallsZahlenGenerieren;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

  // Zufallszahlengenerator initialisieren
  Randomize;

  // Zufallszahl generieren
  ZufallsZahlenGenerieren;

end;

procedure TForm1.ZufallsZahlenGenerieren;
begin

  // Zufallszahl generieren
  Zufallszahl := Random(99) + 1;

  // SpeedButton ausblenden
  SpeedButton1.Visible := False;
  SpeedButton2.Visible := False;

  // Eingabefeld leeren
  Edit1.Text := '';

  // Zähler für Fehlversuche zurücksetzen
  Fehlversuche := 0;

end;

procedure TForm1.Button2Click(Sender: TObject);
var
  Wert: Integer;
  FehlerNr: Integer;
begin

  // eingegebenen Wert von Edit1 in eine Ganzzahl umwandeln
  // und prüfen ob Wert zwischen 1 und 100 liegt
  Val(Edit1.Text, Wert, FehlerNr);
  if (FehlerNr <> 0or (Wert < 1or (Wert > 100then
  begin
    ShowMessage('Geben Sie einen Wert zwischen 1 und 100 ein.');
    Exit;
  end;

  // ist Wert gleich Zufallszahl?
  // wenn nicht, dann Anzeige über SpeedButton ob Zahl kleiner oder größer ist
  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;

  // Fehlversuche mitzählen und prüfen ob Höchstwert erreicht worden ist
  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

  // Programm beenden
  Close;

end;

end.

_________________
Ciao, Sprint.
mav016 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30

Win XP SP2

BeitragVerfasst: 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