mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-21 23:00:43 -08:00
Spaces tend to cause annoyances in a Unix-style shell environment. This change fixes that.
112 lines
1.8 KiB
ObjectPascal
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.
|
|
|