unit Unit1;
{$mode objfpc}{$H+}
{$modeSwitch advancedRecords}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
Crt;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
public
end;
card_pattern = (Club, Diamond, Heart, Spade);
playing_card = record
value:2..14;
name:string[20];
pattern:card_pattern;
procedure card_generating;
end;
pcard = ^playing_card;
card_comparison = (value, pattern, both, none);
function cards_equal(card_x, card_y:pcard):card_comparison;
var
Form1: TForm1;
card_a,
card_b:pcard;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
e:card_comparison;
begin
card_a^.card_generating;
delay(1000);
card_b^.card_generating;
e:= cards_equal(card_a, card_b);
str(e,s);
showmessage('Card A is ' + card_a^.name+#10#13+
'Card B is ' + card_b^.name+#10#13+
'Equality is ' + s);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
new(card_a);
new(card_b);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
dispose(card_a);
dispose(card_b);
end;
procedure playing_card.card_generating;
var
x:2..14;
y:ord(low(card_pattern))..ord(high(card_pattern));
s1,s2:string[8];
begin
randomize;
delay(10);
x:=random(12+1)+2;
value:=x;
case x of
11:s1:='JACK';
12:s1:='QUEEN';
13:s1:='KING';
14:s1:='ACE';
else
str(x,s1);
end;
y:=random(ord(high(card_pattern))+1);
pattern:=card_pattern(y);
str(pattern,s2);
name:=s1+' '+s2;
end;
function cards_equal(card_x, card_y:pcard):card_comparison;
var
temp_e:card_comparison;
begin
if (card_x^.value = card_y^.value) and
(card_x^.pattern <> card_y^.pattern) then
temp_e := value;
if (card_x^.value <> card_y^.value) and
(card_x^.pattern = card_y^.pattern) then
temp_e := pattern;
if (card_x^.value = card_y^.value) and
(card_x^.pattern = card_y^.pattern) then
temp_e := both;
if (card_x^.value <> card_y^.value) and
(card_x^.pattern <> card_y^.pattern) then
temp_e := none;
cards_equal:= temp_e;
end;
end.