Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Spielkarten einbinden (https://www.delphipraxis.net/156849-spielkarten-einbinden.html)

Drazzwe 17. Dez 2010 01:12

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

s.h.a.r.k 17. Dez 2010 01:34

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:
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;
Wurde jetzt irgendwie mehr als ich schreiben wollte :gruebel:

Bummi 17. Dez 2010 07:26

AW: Spielkarten einbinden
 
Ich wäre wahrscheinlich noch fauler und würde eine Imagelist verwenden und den Kartenwert als Index verwenden.

Deep-Sea 17. Dez 2010 09:04

AW: Spielkarten einbinden
 
Zitat:

Zitat von Bummi (Beitrag 1069033)
Ich wäre wahrscheinlich noch fauler und würde eine Imagelist verwenden und den Kartenwert als Index verwenden.

Wenn, dann muss man den Kartenwert mit der Kartenfarbe verknüpfen, um das Ergebnis als Index nutzen zu können. Denn die Farbe spielt da ja auch eine Rolle :wink:

DeddyH 17. Dez 2010 09:19

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 08:46 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