Files
basic-computer-games/01_Acey_Ducey/pascal/simple/aceyducey.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

153 lines
2.8 KiB
ObjectPascal

program aceyducey;
{$IFDEF FPC}
{$mode objfpc}{$H+}
{$ENDIF}
uses
Crt;
var
Stash: Integer;
CardA: Integer;
CardB: Integer;
CardC: Integer;
Bet: Integer;
procedure PrintGreeting;
begin
WriteLN(' ':26, 'ACEY DUCEY CARD GAME');
WriteLN(' ':15, 'CREATIVE COMPUTING MORRISTOWN, NEW JERSEY');
WriteLN;
WriteLN;
WriteLN('ACEY-DUCEY IS PLAYED IN THE FOLLOWING MANNER ');
WriteLN('THE DEALER (COMPUTER) DEALS TWO CARDS FACE UP');
WriteLN('YOU HAVE AN OPTION TO BET OR NOT BET DEPENDING');
WriteLN('ON WHETHER OR NOT YOU FEEL THE CARD WILL HAVE');
WriteLN('A VALUE BETWEEN THE FIRST TWO.');
WriteLN('IF YOU DO NOT WANT TO BET, INPUT A 0');
WriteLN;
end;
procedure PrintBalance;
begin
WriteLN('YOU NOW HAVE ', Stash,' DOLLARS.');
WriteLN;
end;
procedure 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 DrawDealerCards;
var
tmp: Integer;
begin
Write('HERE ARE YOUR NEXT TWO CARDS: ');
repeat
CardA:= Random(14) + 2;
until (CardA >= 2) and (CardA <= 14);
repeat
CardB:= Random(14) + 2;
until (CardB >= 2) and (CardB <= 14) and (CardA <> CardB);
if CardA > CardB then
begin
tmp:= CardB;
CardB:= CardA;
CardA:= tmp;
end;
PrintCard(CardA);
Write(' ');
PrintCard(CardB);
WriteLN;
WriteLN;
end;
procedure DrawPlayerCard;
begin
repeat
CardC:= Random(14) + 2;
until (CardC >= 2) and (CardC <= 14);
PrintCard(CardC);
WriteLN;
WriteLN;
end;
function GetBet: Integer;
begin
Result:= 0;
repeat
Write('WHAT IS YOUR BET: ');
ReadLN(Result);
if Result > Stash then
begin
WriteLn('SORRY, MY FRIEND, BUT YOU BET TOO MUCH.');
WriteLn('YOU HAVE ONLY ', Stash,' DOLLARS TO BET.');
end;
until (Result >=0) and (Result <= Stash);
end;
function TryAgain: Boolean;
var
answer: String;
begin
Result:= False;
Write('TRY AGAIN (YES OR NO)');
ReadLn(answer);
Result:= (LowerCase(answer)='yes') or (LowerCase(answer)='y');
end;
begin
ClrScr;
PrintGreeting;
repeat
Randomize;
Stash:= 100;
repeat
PrintBalance;
DrawDealerCards;
Bet:= GetBet;
if Bet = 0 then
begin
WriteLN('CHICKEN!!');
continue;
end;
DrawPlayerCard;
if (CardC > CardA) and (CardC < CardB) then
begin
WriteLN('YOU WIN!!!');
Inc(Stash, Bet)
end
else
begin
WriteLN('SORRY, YOU LOSE');
Dec(Stash, Bet)
end;
until Stash = 0;
WriteLN('SORRY, FRIEND, BUT YOU BLEW YOUR WAD.');
WriteLN;
until not TryAgain;
WriteLN('O.K., HOPE YOU HAD FUN!');
end.