Hallo,
ich vermute mal, dass Dein Problem mit Endlosschleifen hier liegt:
Delphi-Quellcode:
procedure TfMasseEgale.Manquespiel;
var
aGewinnziel : real;
begin
aGewinnziel := aGewinn + 1;
while aGewinn < aGewinnziel do
Wurf('Manque')
end;
bzw.
Delphi-Quellcode:
procedure TfMasseEgale.Passespiel;
var
aGewinnziel : real;
begin
aGewinnziel := aGewinn + 1;
while aGewinn < aGewinnziel do
Wurf('Passe')
end;
Annahme: Der Aufruf von Stueckgewinn erfolgt über btStartClick und die Bedingung |aManque - aPasse| < 5 ist irgendwann erfüllt. Die while Schleife wird verlassen und es erfolgt der Aufruf von Passespiel (oder Manquespiel was aufs selbe rausläuft). Dann ist aGewinn zunächst 0. Nun wird Wurf ('Passe') mindestens einmal aufgerufen. Ist Dir das Glück nicht hold, kommen häufiger die Zahlen 0..18 und aus Deinem Gewinn wird bald ein ordentlicher Verlust (und aGewinn < aGewinnziel bleibt erfüllt). Selbst wenn gelegentlich die Kugel im Bereich 19..36 zu liegen kommt, erhöhst Du den Gewinn immer nur um Eins (pWette = Passe damit ist pWette <> 'Keine Wette' immer erfüllt).
Ändere mal Deine Wurf Methode ab:
Delphi-Quellcode:
procedure TfMasseEgale.Wurf (pWette : string);
begin
a := Random(37);
case a of
0 : begin
aZero := aZero + 1;
if pWette <> 'Keine Wette'
then aGewinn := aGewinn - 0.5;
end;
1..18 : begin
aManque := aManque + 1;
if pWette = 'Manque'
then aGewinn := aGewinn + 2
else
if pWette <> 'Keine Wette'
then aGewinn := aGewinn - 1
end;
19..36 : begin
aPasse := aPasse + 1;
if pWette = 'Passe'
then aGewinn := aGewinn + 2
else
if pWette <> 'Keine Wette'
then aGewinn := aGewinn - 1
end;
end;
i := i + 1;
if aGewinn < aMinus
then aMinus := aGewinn;
end;
und nutze aMinus als zusätzliche Abbruchbedingung, wenn eine bestimmte Schranke unterschritten wird.
Gruß