Autor Beitrag
Public Enemy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26

Win Xp und Win Vista
Delphi 6 und 7
BeitragVerfasst: So 15.03.09 13:48 
Hallo zusammen,

hoffe dies ist das richtige unter Forum für mein Problem. Und zwar habe ich ein Spiel in Delphi gemacht und zur Zeit läuft es auch so wie ich möchte bis auf einen kleinen Fehler. Und Zwar geht es darum Geld zu gewinnen, welches einem dann auch gut geschrieben wird. Doch wenn man sein ganzes Geld verzockt hat und das Spiel erneut startet über Datei-> Neues Spiel
Wird kein Geld mehr bei einem Gewinn gut geschrieben. Abgezogen wird es jedoch. Dies ist aber nur wenn man das Spiel ganze Resetet hat keine Ahnung wieso, weshalb warum :D

Ich werde einfach einmal den Code hier posten und hoffe ihr blickt da durch. Bin auch für weitere Kritik offen was man besser machen könnte und und und

MfG Public Enemy


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:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
unit DiceGame;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus;

type
  TForm1 = class(TForm)
    Label1_Geld: TLabel;
    GroupBox1_setzen: TGroupBox;
    GroupBox2_Wuerfeln: TGroupBox;
    GroupBox3_GewinnNeustart: TGroupBox;
    Label2_Restgeld: TLabel;
    Button1_Verringern: TButton;
    Button2_Erhoehen: TButton;
    Edit1_Einsatz: TEdit;
    Label3_Zahl: TLabel;
    ComboBox1_Wuerfelzahl: TComboBox;
    Button3_Setzen: TButton;
    Label4_Wuerfel1: TLabel;
    Label5_Wuerfel2: TLabel;
    Label6_Wuerfel3: TLabel;
    Button4_Los: TButton;
    Label7_Treffer: TLabel;
    Label8_Gewinn: TLabel;
    Button5_Neustart: TButton;
    Label9_Gewonnen: TLabel;
    Label10_Einsatz: TLabel;
    Datei: TMainMenu;
    Datei1_Datei: TMenuItem;
    MAin_Beenden: TMenuItem;
    MAin_Optionen: TMenuItem;
    Main_NeuesSpiel1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure Button1_VerringernClick(Sender: TObject);
    procedure Button2_ErhoehenClick(Sender: TObject);
    procedure Button3_SetzenClick(Sender: TObject);
    procedure Button4_LosClick(Sender: TObject);
    procedure Button5_NeustartClick(Sender: TObject);
    procedure MAin_BeendenClick(Sender: TObject);
    procedure MAin_OptionenClick(Sender: TObject);
    procedure Main_NeuesSpiel1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  geld: integer;
  gesetztesGeld: integer;
  gesetzteZahl: integer;
  i: integer;
  w1, w2, w3: integer;
  trefferCount: integer;
  einsatz: integer;
  gewonnen: integer;


implementation

uses PopUp;

{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
  Button1_Verringern.Enabled := false;
  Button4_Los.Enabled := false;
  Button5_Neustart.Enabled := false;

  geld:=20;
  gesetztesGeld:= 1;
  einsatz := 0;
  gewonnen := 0;

  Label1_Geld.caption := 'Geld: ' + IntToStr(geld) + '€';
  Label2_Restgeld.caption := 'Restgeld: ' + IntToStr(geld-gesetztesGeld) + '€';
  Label9_Gewonnen.caption := 'Gewonnen: 0€';
  Label10_Einsatz.caption := 'Einsatz: 0€';

  for i:=1 to 6 do
  begin
  ComboBox1_Wuerfelzahl.Items.Add(IntToStr(i))
  end;
  ComboBox1_Wuerfelzahl.ItemIndex := 0;
end;


procedure TForm1.Button1_VerringernClick(Sender: TObject);
begin
  dec(GesetztesGeld,1);
  Edit1_Einsatz.Text := IntToStr(gesetztesGeld) + '€';
  Button2_erhoehen.Enabled := true;
  Label2_Restgeld.caption := 'Restgeld: ' + IntToStr(geld-gesetztesGeld) + '€';


  if (gesetztesGeld=1)
   then
    Button1_Verringern.Enabled := false;
  end;



procedure TForm1.Button2_ErhoehenClick(Sender: TObject);
begin
  inc(gesetztesGeld,1);
  Edit1_Einsatz.Text := IntToStr(gesetztesGeld) + '€';
  Button1_Verringern.Enabled := true;
  Label2_Restgeld.caption := 'Restgeld: ' + IntToStr(geld-gesetztesGeld) + '€';

  if (geld-gesetztesGeld = 0)
   then
    begin
    Button2_Erhoehen.Enabled := false;
  end;

end;

procedure TForm1.Button3_SetzenClick(Sender: TObject);
begin
  Button1_Verringern.Enabled := false;
  Button2_Erhoehen.Enabled := false;
  Edit1_Einsatz.Enabled := false;
  ComboBox1_Wuerfelzahl.Enabled := false;
  Button4_Los.Enabled := true;
  gesetzteZahl := StrToInt(ComboBox1_Wuerfelzahl.Text);
  dec(geld, gesetztesGeld);
  inc(einsatz, gesetztesGeld);
  Label10_einsatz.caption := 'Einsatz: ' + IntToStr(einsatz) + '€';
  Label1_Geld.caption := 'Geld: ' + IntToStr(geld) + '€';
  Button3_Setzen.caption := 'Gesetzt';
  Button3_Setzen.Enabled := false;
end;

procedure TForm1.Button4_LosClick(Sender: TObject);
begin
    w1:=1+random(6);
    w2:=1+random(6);
    w3:=1+random(6);
    Label4_Wuerfel1.caption := 'Würfel1: ' + IntToStr(w1);
    Label5_Wuerfel2.caption := 'Würfel2: ' + IntToStr(w2);
    Label6_Wuerfel3.caption := 'Würfel3: ' + IntToStr(w3);
    Button4_Los.caption := 'Fertig';
    Button4_Los.Enabled := false;
    Button3_Setzen.Enabled := false;
    Button5_Neustart.Enabled := true;
    trefferCount:=0;

    if(w1=gesetzteZahl)
     then
      begin
     inc(trefferCount,1);
    end;
    if(w2=gesetzteZahl)
     then
      begin
     inc(trefferCount,1);
    end;
    if(w3=gesetzteZahl)
     then
      begin
     inc(trefferCount,1);
    end;

    Label7_Treffer.caption := 'Treffer: ' + IntToStr(trefferCount);
    Label8_Gewinn.caption := 'Gewinn: ' + IntToStr(trefferCount*gesetztesGeld) + '€';
    inc(geld, trefferCount*gesetztesGeld);
    Label1_Geld.caption := 'Geld: ' + IntToStr(geld) + '€';
    inc(gewonnen, trefferCount*gesetztesGeld);
    Label9_Gewonnen.caption := 'Gewonnen: ' + IntToStr(gewonnen) + '€';

    if(geld=0)
     then
      begin
      Button5_Neustart.Enabled := false;
      ShowMessage('Verloren!!!');
      
end;
end;

procedure TForm1.Button5_NeustartClick(Sender: TObject); //Neustart Button
begin
  Button1_Verringern.Enabled := false;
  Button2_Erhoehen.Enabled := true;
  Button3_Setzen.Enabled := true;
  Button4_Los.Enabled := false;
  Button5_Neustart.Enabled := false;
  Button3_Setzen.Caption := 'Setzen';
  Button4_Los.Caption := 'Los!';
  Edit1_Einsatz.Enabled := true;
  ComboBox1_Wuerfelzahl.Enabled := true;
  Label4_Wuerfel1.caption := 'Würfel1:';
  Label5_Wuerfel2.caption := 'Würfel2:';
  Label6_Wuerfel3.caption := 'Würfel3:';
  Label7_Treffer.caption := 'Treffer:';
  Label8_Gewinn.caption := 'Gewinn:';
  gesetztesGeld := 1;
  Edit1_Einsatz.Text := '1€';

  if(geld-gesetztesGeld=0)
   then
    begin
    Button2_Erhoehen.Enabled := false;
  end;
  
  Label2_Restgeld.caption := 'Restgeld: ' + IntToStr(geld-gesetztesGeld) + '€';
end;

procedure TForm1.MAin_BeendenClick(Sender: TObject);
begin
self.Close;
end;

procedure TForm1.MAin_OptionenClick(Sender: TObject);
begin
Form2_Fenster.Visible:=true;
end;

procedure TForm1.Main_NeuesSpiel1Click(Sender: TObject);
begin

Edit1_Einsatz.Enabled := true;
Button2_Erhoehen.Enabled:= true;

Label4_Wuerfel1.caption := 'Würfel1: ';
Label5_Wuerfel2.caption := 'Würfel2: ';
Label6_Wuerfel3.caption := 'Würfel3: ';
Edit1_Einsatz.Text:= IntToStr(1) + '€';

ComboBox1_Wuerfelzahl.Enabled:= true;
Button3_Setzen.Enabled := True;

geld:=20;
gesetztesGeld:= 1;
einsatz := 0;
gewonnen := 0;


  Label1_Geld.caption := 'Geld: ' + IntToStr(geld) + '€';
  Label2_Restgeld.caption := 'Restgeld: ' + IntToStr(geld-gesetztesGeld) + '€';
  Label9_Gewonnen.caption := 'Gewonnen: 0€';
  Label10_Einsatz.caption := 'Einsatz: 0€';

ComboBox1_Wuerfelzahl.ItemIndex := 0;
end;


end.



Falls noch mehr benötigt wird bescheid sagen...
Public Enemy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26

Win Xp und Win Vista
Delphi 6 und 7
BeitragVerfasst: Mo 16.03.09 12:11 
Also ich könnte auch jemanden per Pn den ganzen Code schicken wenn es helfen würde? Sry für doppel Post dachte aber das wenn ich nur editiere es keiner sieht.
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mo 16.03.09 12:16 
könntest du vielleicht das Spiel selbst als ZIP anhängen. Da würd ich mir leichter tun das ganze dann zu analysieren, wo das problem steckt. ;-)

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Public Enemy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26

Win Xp und Win Vista
Delphi 6 und 7
BeitragVerfasst: Mo 16.03.09 12:19 
Hier bitte sehr. Wusste ich doch das es daran liegt :D
Einloggen, um Attachments anzusehen!
Public Enemy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26

Win Xp und Win Vista
Delphi 6 und 7
BeitragVerfasst: Mi 18.03.09 16:30 
Echt keiner ne Ahnung ? Ihr seid meine einzige Hilfe :D
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Mi 18.03.09 17:41 
user profile iconPublic Enemy hat folgendes geschrieben Zum zitierten Posting springen:
Echt keiner ne Ahnung ? Ihr seid meine einzige Hilfe :D


... und damit das nicht so bleibt, solltest du dich etwas mit dem Delphi-Debugger (v.a. Breakpoints) beschäftigen. Dann bekommst du der Ursache deines Problems auch selbständig auf die Spur.
Public Enemy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26

Win Xp und Win Vista
Delphi 6 und 7
BeitragVerfasst: Mi 18.03.09 18:07 
Danke für diesen Tipp :D Jedoch habe ich es schon probiert, doch nichts gefunden. Gucke mir aber gerade mal ein Tutorial für Debbuging in Delphi an :D

UPDATE

Mir ist gerade mal aufgefallen, dass manchmal doch Geld dazu addiert wird hmm ganz schön trocky der Fehler :d
Ulixes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 63

Win Vista Home Premium
Delphi 2009 Professional, XHTML, CSS, PHP
BeitragVerfasst: Mi 18.03.09 19:57 
Hallo,

also ich muss gestehen, dass bei mir auch nach mehrmaligen Drücken des Buttons "Neues Spiel" das Programm
noch alles richtig macht.
Ich weiß allerdings nicht, was du genau mit "Reseten" meinst:

-> Programm schließen und öffnen
-> "neues Spiel"
-> "Neu Starten"

Mit freundlichen Grüßen

_________________
"Alles ist möglich, Unmögliches dauert nur ein bisschen länger!"
Public Enemy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26

Win Xp und Win Vista
Delphi 6 und 7
BeitragVerfasst: Mi 18.03.09 21:05 
Ehm okay sry dann ahbe ich mich etwas dumm ausgedrückt. Also wenn man das Spiel öffnet und sofort spielt geht alles noch klar. Doch wenn man verloren hat muss man das Spiel über Datei und Neues Spiel starten. Wenn man jetzt wieder spielen will passiert das oben genannte Problem. Und dies unkontinuierlich

Also mit reseten meinte ich Datei->Neues Spiel
Ulixes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 63

Win Vista Home Premium
Delphi 2009 Professional, XHTML, CSS, PHP
BeitragVerfasst: Do 19.03.09 15:37 
Also ich finde wirklich kein Fehler in der Anwendung... :(
Ich habe das jetzt 10min gespielt, bin mehrmals Pleite gegangen und das oben genannte
Problem tritt bei mir nicht auf.

_________________
"Alles ist möglich, Unmögliches dauert nur ein bisschen länger!"
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Do 19.03.09 17:13 
user profile iconUlixes hat folgendes geschrieben Zum zitierten Posting springen:
Also ich finde wirklich kein Fehler in der Anwendung... :(
Ich habe das jetzt 10min gespielt, bin mehrmals Pleite gegangen und das oben genannte
Problem tritt bei mir nicht auf.

Kann ich mich anschließen. Aber daraus habe ich was gelernt: Spiel nie Würfelspiele.
Public Enemy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26

Win Xp und Win Vista
Delphi 6 und 7
BeitragVerfasst: Fr 20.03.09 16:16 
Ich weiss nicht wan und wieso das jetzt genau passiert-.- Komm und geht wann es will. Habe mich nun entschieden den Code säubern mal gucken. Außerdem habe ich das Prog nun meinem Lehrer mal mitgegeben..

Trotzdem vielen Dank für eure Mühe ;-)