Files
basic-computer-games/01_Acey_Ducey/pascal/object-pascal/deck.pas
Chris Reuter d26dbf036a Removed spaces from top-level directory names.
Spaces tend to cause annoyances in a Unix-style shell environment.
This change fixes that.
2021-11-21 18:30:21 -05:00

112 lines
1.8 KiB
ObjectPascal

unit Deck;
{$IFDEF FPC}
{$mode objfpc}{$H+}
{$ENDIF}
interface
uses
Classes
, SysUtils
;
type
{ TDeck }
TDeck = class
private
FDealerLow: Integer;
FDealerHigh: Integer;
FPlayer: Integer;
procedure PrintCard(const ACard: Integer);
protected
public
property DealerLow: Integer
read FDealerLow;
property DealerHigh: Integer
read FDealerHigh;
property Player: Integer
read FPlayer;
procedure DrawCards;
procedure ShowDealerCards;
procedure ShowPlayerCard;
function PlayerWins: Boolean;
published
end;
implementation
{ TDeck }
procedure TDeck.PrintCard(const ACard: Integer);
begin
if ACard < 11 then
begin
Write(ACard);
end;
if ACard = 11 then
begin
Write('JACK');
end;
if ACard = 12 then
begin
Write('QUEEN');
end;
if ACard = 13 then
begin
Write('KING');
end;
if ACard = 14 then
begin
Write('ACE');
end;
end;
procedure TDeck.DrawCards;
var
tmp: Integer;
begin
repeat
FDealerLow:= Random(14) + 2;
until (FDealerLow >= 2) and (FDealerLow <= 14);
repeat
FDealerHigh:= Random(14) + 2;
until (FDealerHigh >= 2) and (FDealerHigh <= 14) and (FDealerLow <> FDealerHigh);
if FDealerLow > FDealerHigh then
begin
tmp:= FDealerHigh;
FDealerHigh:= FDealerLow;
FDealerLow:= tmp;
end;
repeat
FPlayer:= Random(14) + 2;
until (FPlayer >= 2) and (FPlayer <= 14);
end;
procedure TDeck.ShowDealerCards;
begin
Write('HERE ARE YOUR NEXT TWO CARDS: ');
PrintCard(FDealerLow);
Write(' ');
PrintCard(FDealerHigh);
WriteLN;
WriteLN;
end;
procedure TDeck.ShowPlayerCard;
begin
PrintCard(FPlayer);
WriteLN;
WriteLN;
end;
function TDeck.PlayerWins: Boolean;
begin
Result:= (FPlayer > FDealerLow) and (FPlayer < FDealerHigh);
end;
end.