AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Code in Konsole anders als in VCL?

Ein Thema von Flips · begonnen am 25. Mai 2007 · letzter Beitrag vom 25. Mai 2007
Antwort Antwort
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, 20: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
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Code in Konsole anders als in VCL?

  Alt 25. Mai 2007, 20:41
hm... ungünstiger Zufall? Die Repeat-Until wird unter Umständen nie bzw. ewig nicht beendet...
  Mit Zitat antworten Zitat
Flips

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

Re: Code in Konsole anders als in VCL?

  Alt 25. Mai 2007, 20:44
Ja gut, bei der Programmierung in der Konsole hab ich ja schon darüber nachgedacht und einen dauerlauf gemacht, er hat ne Stunde lang erfolgreich gemischt.
Und das es jetzt 6 mal hintereinander mit VCL-Forms nicht geht find ich dann doch großer Zufall
Philipp F.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Code in Konsole anders als in VCL?

  Alt 25. Mai 2007, 20:58
hast du es mal mit einem haltepunkt versucht und geschaut wo er hängt bzw. warum?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Flips

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

Re: Code in Konsole anders als in VCL?

  Alt 25. Mai 2007, 21:03
jap,
hab ja glaub ich erwähnt das es in der repeat until schleife ist.
Allerdings habe ich das Problem jetzt gelöst indem ich einfach einen anderen Algorithmus geschrieben habe und das 2D-Array in ein 1D-Array verwandelt habe.
Nicht elegant, aber es geht auch so.

Trotzdem weiß ich nicht wieso diese Schleife kein Ende findet...Jedenfalls in Form, in der Konsole läufts immer noch tadellos
Philipp F.
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Code in Konsole anders als in VCL?

  Alt 25. Mai 2007, 21:07
Mach es wie im richtigen Leben: zuerst ein Kartenspiel besorgen und dann erst mischen!
Sprich: erstelle zuerst Dein Kartenspiel im Array mit aufeinanderfolgenden Farben/Werten, und mische dann das Array ordentlich durch. Auf diese Weise kann es nicht vorkommen, dass wie bei Dir, womöglich nur noch eine Karte fehlt, diese aber, aus einem dummen Zufall, nie via Random erstellt wird.
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz