Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Problem beim Neustart meines Spieles.
Public Enemy - So 15.03.09 13:48
Titel: Problem beim Neustart meines Spieles.
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
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 public 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); 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 - 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 - 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
Public Enemy - Mo 16.03.09 12:19
Hier bitte sehr. Wusste ich doch das es daran liegt :D
Public Enemy - Mi 18.03.09 16:30
Echt keiner ne Ahnung ? Ihr seid meine einzige Hilfe :D
azubi_20 - Mi 18.03.09 17:41
Public Enemy hat folgendes geschrieben : |
| 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 - 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 - 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
Public Enemy - 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 - 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.
Regan - Do 19.03.09 17:13
Ulixes hat folgendes geschrieben : |
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 - 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 ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!