Also das sieht mir etwas umständlich aus
Ich habe meins gefunden:
So ich habe noch was gefunden:
Ich habe eine Klasse TKarte die so aussieht (für deine Zwecke angepasst):
Delphi-Quellcode:
type
TKartenWert = 1..13; // 1 = AS, 11 = Bube, 12 = Dame, 13 = König
TKartenFarbe = (kfKaro, kfHerz, kfPik, kfKreuz);
TKartenPosition = 1..8;
TKarte = class(TObject)
private
FWert: TKartenWert;
FFarbe: TKartenFarbe;
FPosition: TKartenPosition;
FUsedBool: Boolean;
public
constructor Create(Wert : TKartenWert;Farbe : TKartenFarbe;Position : TKartenPosition);
property Wert: TKartenWert read FWert write FWert;
property Farbe: TKartenFarbe read FFarbe write FFarbe;
property Position: TKartenPosition read FPosition write FPosition;
property UsedBool: Boolean read FUsedBool write FUsedBool;
end;
Der cunstructor:
Delphi-Quellcode:
constructor TKarte.create(Wert : TKartenWert;Farbe : TKartenFarbe;Position : TKartenPosition);
begin
inherited create;
FWert := Wert;
FPosition := Position;
FFarbe := Farbe;
FUsedBool := UsedBool;
end;
Das sind im Grunde meine Karten. Dann habe ich eine Funktion zum Ziehen für die Farbe jeder Karte.
Die Kartenfarbe:
Delphi-Quellcode:
function drawKartenFarbe(RFarbe : integer):TKartenFarbe;
begin
case RFarbe of
1 : result := kfKaro;
2 : result := kfHerz;
3 : result := kfPik;
4 : result := kfKreuz;
end;
end;
Dann ziehe ich die Karten und prüfe auf doppelte, wenn doppelte vorhanden sind ziehe ich nochmal, bis es keine doppelten Karten gibt. Die Karten stecke ich in ein Array von TKarte (Karten ziehen):
Delphi-Quellcode:
for a := 1 to 8 do
begin
ABlatt[a]:=TKarte.Create((random(13)+1),drawKartenFarbe((random(4)+1)),a); //(random(13)+1) = KartenWert!
end;