Einzelnen Beitrag anzeigen

Flips

Registriert seit: 17. Feb 2005
Ort: Sankt Wendel
491 Beiträge
 
Delphi 7 Professional
 
#1

Code in Konsole anders als in VCL?

  Alt 25. Mai 2007, 19:34
Hi.

Ich habe folgenden Code um ein 52er Kartenspiel zu mischen.
Das Kartenspiel ist in einem 2-Dimensionalen Array. Die erste Dimension beschreibt die Farbe (Herz, Karo, Kreuz, Pik), die zweite Dimension den Wert (2-10,J,Q,K,A). Nach dem mischen werden die Karten wieder übereinander gelegt.
Der eigentliche Mischvorgang kommt danach, aber ich habe den Fehler auf diesen Abschnitt begrenzen können.
Und zwar auf die repeat-until schleife.

Delphi-Quellcode:
procedure ShuffleCards;
var
  i,j,akt: Integer;
  wert,farbe:integer;
begin
akt := 1;
for i := 1 to 13 do //13 Werte
  for j := 1 to 4 do //4 Farben
     begin
      repeat
{Mir ist klar das hier nie 13 oder 4 rauskommen wird, die Enumeration mit den  Werten/Farben beginnt ja auch wie ein Array bei 0, daher dürfte das so stimmen}
        wert := random(13);
        farbe := random(4);
      until (FKarten[farbe][wert].Chosen = false);

      //Karte als genommen markieren
      FKarten[farbe][wert].Chosen := true;
      //Karte ins Deck legen
      FDeck[akt].Wert := TWert(wert);
      FDeck[akt].Farbe := TFarbe(farbe);
      inc(akt);
    end;
end;
In der Konsole funktioniert dieser Code perfekt, in eine VCL-Anwendung eingebunden friert alles ein...
Wisst ihr wieso???

Thx,
Flips
Philipp F.
  Mit Zitat antworten Zitat