mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2026-01-03 16:48:04 -08:00
Removed spaces from top-level directory names.
Spaces tend to cause annoyances in a Unix-style shell environment. This change fixes that.
This commit is contained in:
111
01_Acey_Ducey/pascal/object-pascal/deck.pas
Normal file
111
01_Acey_Ducey/pascal/object-pascal/deck.pas
Normal file
@@ -0,0 +1,111 @@
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user