Einzelnen Beitrag anzeigen

Benutzerbild von zecke
zecke

Registriert seit: 17. Jan 2004
494 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: draw poker, hand erkennung

  Alt 1. Mär 2007, 17:10


Ich habe mal deinen Code herumgetestet, speziell um mir anzuschauen, wie das dem Deklarieren einer Klasse etc. funktioniert. Dafür eignet sich dein Ausschnitt bisher hervorragend

Meine Frage dazu: Wie kann ich denn die Kartenwerte in die Variablen schreiben?

Ich habe bisher ein bisschen herummodifiziert, was aber nicht funktioniert (Exception, Zugriffsverletzung):
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type
  TKartenWert = 1..13; // 1 = AS, 11 = Bube, 12 = Dame, 13 = König
  TKartenFarbe = (kfKaro, kfHerz, kfPik, kfKreuz);
  TKartenPosition = 1..5;

  TKarte = class(TObject)
    private
      FWert: TKartenWert;
      FFarbe: TKartenFarbe;
      FPosition: TKartenPosition;
    public
      property RWert: TKartenwert read FWert;
      property RFarbe: TKartenFarbe read FFarbe;
      property RPosition: TKartenPosition read FPosition;
      property WWert: TKartenwert write FWert;
      property WFarbe: TKartenFarbe write FFarbe;
      property WPosition: TKartenPosition write FPosition;

end;

var
  Form1: TForm1;
  TBlatt: Array[1..5] of TKarte;

implementation

{$R *.dfm}

function isOnePair():Boolean;
begin
  result := ((TBlatt[1].RWert = TBlatt[2].RWert) and (TBlatt[1].RWert <> TBlatt[3].RWert));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TBlatt[1].WWert:=1;
TBlatt[1].WFarbe:=kfKaro;
TBlatt[1].WPosition:=1;
{
TBlatt[2].WWert:=2;
TBlatt[2].WFarbe:=kfKaro;
TBlatt[2].WPosition:=2;

TBlatt[3].WWert:=3;
TBlatt[3].WFarbe:=kfKaro;
TBlatt[3].WPosition:=3;

TBlatt[4].WWert:=4;
TBlatt[4].WFarbe:=kfKaro;
TBlatt[4].WPosition:=4;

TBlatt[5].WWert:=5;
TBlatt[5].WFarbe:=kfKaro;
TBlatt[5].WPosition:=5;
}


isOnePair();
end;

end.
Mir ist übrigens klar, dass isOnePair nur die 1. beiden Karten auf ein Paar prüft und nur die 1. drei Karten brücksichtigt.


Wäre nett, wenn mir jemand helfen könnte, das System zu verstehen

Ich probiere und probiere, aber es will nicht so recht.
mfg zecke
  Mit Zitat antworten Zitat