Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Kartenspiel Algorithmus (https://www.delphipraxis.net/15750-kartenspiel-algorithmus.html)

Ömmel 3. Feb 2004 16:47


Kartenspiel Algorithmus
 
Tag!
Ich habe ein ziemliches Problem einen Algorithmus zum sortieren eines Kartenspiel zu entwerfen! Es geht in dem Programm darum, dass 10 zufällige Zahlen aus einem Kartenstapel (54 Karten) gezogen werden. Diese Karten müssen nun in der hand des Spielers sortiert werden. Frage: Wie sieht der Algorithmus aus, wenn ich ein Arrayfeld von 54 habe??? :?: :!: :gruebel:
MFG Ömmel

fkerber 3. Feb 2004 16:50

Re: Kartenspiel Algorithmus
 
Hi!

Geht es dir drum, die 54 Karten zu sortieren, oder nur die 10 gezogenen?
Willst du das Ganze mit Delphi machen? (Wenn ja ==> Falsche Kategorie).

Ciao fkerber

Matze 3. Feb 2004 16:50

Re: Kartenspiel Algorithmus
 
Delphi-Quellcode:
randomize;

...

for i := 1 to 10 do
  Karte := array[random(54)+1];
Sortieralgos gibt's in der CodeLib.

Stanlay Hanks 3. Feb 2004 16:56

Re: Kartenspiel Algorithmus
 
Du könntest jeder Karte eine Art ID verpassen (Vielleicht mit einem Type und dann eine Eigenschaft "ID" und damit ein Array). Dann könntest du anhand dieser ID die Karten sortieren.

Man liest sich, Stanlay :hi:

Michael Leyhe 3. Feb 2004 17:12

Re: Kartenspiel Algorithmus
 
HI

Ich würde es so machen wie Stanley Hanks es beschrieben hat.
Alle Karten bekommen eine Nummer wobei die niedrigste Karte die niedrigste Nummer bekommt und die höchste Karte die höchste Nummer.
Wenn du nun die Nummern sortierst(Sortierverfahren stehen in der Cod.lib.), dann sind die Karten in aufsteigender Reihenfolge sortiert.

Jelly 3. Feb 2004 17:47

Re: Kartenspiel Algorithmus
 
Zitat:

Zitat von Matze
Delphi-Quellcode:
randomize;

...

for i := 1 to 10 do
  Karte := array[random(54)+1];

Bedenke aber noch bei dem Code keine Karten doppelt zu ziehen, sonst hast du plötzlich 5 Asse :lol:

Gruß,
Tom

d3g 3. Feb 2004 18:24

Re: Kartenspiel Algorithmus
 
Zitat:

Zitat von Jelly
Bedenke aber noch bei dem Code keine Karten doppelt zu ziehen, sonst hast du plötzlich 5 Asse :lol:

Und dazu nimmst du am besten Sets, das beste an Pascal überhaupt.

Delphi-Quellcode:
function PickCards(): String;
var
  Picked, i: Integer;
  Cards: set of 1..54;
  s: String;
begin
  Cards := [];
  for i := 1 to 10 do begin
    Picked := Randomize(54) + 1;
    if (not (Picked in Cards)) then
      Cards := Cards + [Picked];
  end;

  Result := '';
  for i := 1 to 54
    if (i in Cards) then begin
      case (i div 13) of
        0: Result := 'Kreuz ';
        1: Result := 'Pik ';
        2: Result := 'Herz ';
        3: Result := 'Karo ';
      end;
      case (i mod 13) of
        1:    Result := Result + 'As';
        2..10: Result := Result + IntToStr(i mod 13);
        11:   Result := Result + 'Bube';
        12:   Result := Result + 'Dame';
        0:    Result := Result + 'König';
      end;
    end;
end;
[edit]Zum Sortieren kannst du das Sortier-Tutorial hier aus dem Forum zu Rate ziehen.[/edit]

Matze 3. Feb 2004 18:26

Re: Kartenspiel Algorithmus
 
Zitat:

Zitat von Jelly
Bedenke aber noch bei dem Code keine Karten doppelt zu ziehen, sonst hast du plötzlich 5 Asse :lol:

Jo, neue Spielregeln :mrgreen:


[Edit]Cool, ich bin ja Gold-Member :)[/Edit]

Nico1 3. Feb 2004 18:51

Re: Kartenspiel Algorithmus
 
Hallo ich will ja jetzt nicht als altklug klingen aber

Picked := Randomize(54) + 1; --> sollte nach meiner meinungnach random(54) heißen oder täusche ich mich :chat:
// edit
Aja : for i := 1 to 54 --> sollte for i := 1 to 54 do
// edit
noch was : das s : String kannste auch weglassen :mrgreen:

mfg Nico

d3g 3. Feb 2004 18:54

Re: Kartenspiel Algorithmus
 
Zitat:

Zitat von Nico1
Picked := Randomize(54) + 1; --> sollte nach meiner meinungnach random(54) heißen oder täusche ich mich :chat:

Ich bin von einem Pascal-Programmierer ausgegangen, der mit 1 zu zählen beginnt (obwohl 0 oft sinnvoller ist). Random(54) gibt einen Wert zwischen 0 und 53 zurück.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:44 Uhr.
Seite 1 von 3  1 23      

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