![]() |
Spielkarten einbinden
Hiho liebe community.
ich stehe vor folgendem problem. ich bin gerade dabei ein kartenspiel zu programmieren und komme nicht aus den startlöchern, da ich es leider nicht schaffe die karten einzubinden (grundwissen ist vorhanden). ich habe natürlich auch schon den freund und helfer google benutzt und konnte leider keinen lösung finden die auf mein problem zutreffen bzw habe das nicht verstanden/konnte es nicht nachvollziehen. die grafische oberfläche steht soweit die ersten onclick funktionen sind auch schon vorhanden,sprich ich habe alles drumherum erstellt. nun komme ich nicht weiter weil mir die karten fehlen. so nun zu meiner frage wie kann ich ein kartenspiel einbinden bzw wie mache ich das. jeder karte soll auch ein bmp zugeteilt werden. ich weis das ich nen kartenwert brauche für die wertigkeit der karte und ich muss die farbebestimmen. die karte muss auch festgelegt sein damit ich die bmp zuweisen kann. ich habe schon einige lösungsvorschlöge gesehen nur nicht verstanden(zb mit einem constructor) nur sehe ich atm das prob das die karten generiert werden und somit die bmp zuteilung in meinen augen nicht ganz möglich ist. type TKarten = class (TObject) private Kartenwert: integer; Kartenfarbe: integer; Kartenmotiv: Tbitmap; public end; das sind meine ersten ansätze. die werte der karte sollen ja nicht änderbar sein und habe sie somit privatiesiert. mfg drazzwe |
AW: Spielkarten einbinden
Hier mal mein Idee: lass erst mal die Integer da weg und nutze Enumerations! Zudem wurde ich dann eine EnumToString Funktion einbauen und passenden dann die BMP-Dateien benennen:
Delphi-Quellcode:
Wurde jetzt irgendwie mehr als ich schreiben wollte :gruebel:
uses
{...} TypeInfo {...}; type TKartenwert = (kwBube, kwDame, kwKoenig); // natürlich zu verfollständigen, so wie alles weitere TKartenfarbe = (kfEichel, kfLaub {...}); TKarte = class(TObject) private FKartenwert: TKartenwert; FKartenfarbe: TKartenfarbe; FKartenmotiv: TBitmap; procedure LoadKartenmotiv(); public constructor Create(AKartenwert: TKartenwert; AKartenfarbe: TKartenfarbe); end; function KartenwertToString(AKartenwert: TKartenwert): String; function KartenfarbeToString(AKartenfarbe: TKartenfarbe): String; implementation procedure TKarte.LoadKartenmotiv(); var Filename : String; begin Filename := KartenwertToString(FKartenwert) + '_' + KartenfarbeToString(FKartenfarbe) + '.bmp'; if (not FileExists(Filename)) then raise Exception... if (Assigned(FBitmap)) then FreeAndNil(FBitmap); FBitmap := TBitmap.Create(); FBitmap.LoadFromFile(Filename); end; constructor TKarte.Create(AKartenwert: TKartenwert; AKartenfarbe: TKartenfarbe); begin inherited Create(); FKartenwert := AKartenwert; FKartenfarbe := AKartenfarbe; LoadKartenmotiv(); end; // hier wende ich einen kleinen Trick an, da ich faul bin :mrgreen: // daher muss TypInfo in die uses Liste! function KartenwertToString(AKartenwert: TKartenwert): String; begin Result := Delete(GetEnumName(TypeInfo(TKartenwert), Integer(AKartenwert)), 1, 2) end; function KartenfarbeToString(AKartenfarbe: TKartenfarbe): String; begin Result := Delete(GetEnumName(TypeInfo(TKartenfarbe), Integer(AKartenfarbe)), 1, 2) end; |
AW: Spielkarten einbinden
Ich wäre wahrscheinlich noch fauler und würde eine Imagelist verwenden und den Kartenwert als Index verwenden.
|
AW: Spielkarten einbinden
Zitat:
|
AW: Spielkarten einbinden
Wie wäre es denn mit einer Klasse/einem Record TCard, in der/dem die Farbe, der Wert und der Index abgelegt wird?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz