home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
300 Favorite Games
/
300GAMES.iso
/
61
/
maire.cdl
< prev
next >
Wrap
Text File
|
1994-01-30
|
3KB
|
163 lines
//⌐ David Jean, 1993
game maire is 32 by 13;
// D1 Discard
// A1
// A2
{--------------------------------------------------------------------------}
#include 'predicat.cdh'
#include 'deck.cdh'
stack CURSOR is
Handler := HCARDS;
end CURSOR;
{--------------------------------------------------------------------------}
stack D1, A1, A2;
var s : stack,
tur : integer,
info : boolean;
procedure WaitInfo;
procedure UpDate is
if info then
begin
Clear 'Informations' At 7,2 Is 20 by 3;
Write('Turn : ',tur,' / 3\n');
Write('Remaining Cards : ',D1!+A1!+A2!);
WaitInfo;
end
else Clear;
procedure About is
begin
Clear 'About Maire';
write('Rules from : ?\n');
write('Program : ⌐ David Jean, 1993.\n');
if Info then Wait 'Info...' UpDate;
end;
procedure Doinfo is
begin
info := not info;
UpDate;
end;
procedure WaitInfo is
if info then
Wait 'Info Off' DoInfo
else
Wait 'Info On' DoInfo;
stack Discard is
x := 28;
y := 2;
Direction := over;
w := 4;
h := 3;
//****************************
Start is
UpDate;
end Discard;
stack A1 is
X := 2;
Y := 6;
Direction := right;
w := 30;
h := 3;
//****************************
Start is
begin
Pull 1 From D1;
Turn [1] side up;
end;
//****************************
SelectFrom(Spos : Index) is
if !>0 then Pull 1 to Cursor;
//****************************
SelectTo(Spos : Index) is
if !>0 then
if SameRank?([!],Cursor[1]) then
begin
Pull 1 to Discard;
Pull 1 from Cursor to Discard;
UpDate;
end;
//****************************
Help is
begin
Clear 'The Tableau';
Write('Any new card dealt from The Stock can be used to form a pair ');
Write('with its neighbor to the left or the rightmost card ');
Write('from the other pile.\n');
Write('Pairs are removed.\n\n');
Write('The goal is to empty The Tableau and The Stock.\n');
Wait 'About...' About;
if Info then Wait 'Info...' UpDate;
WaitInfo;
end;
end A1;
stack A2 from A1 is
X := 2;
Y := 10;
end A2;
stack D1 is
X := 2;
Y := 2;
Direction := over;
w := 4;
h := 3;
//****************************
Start is
begin
OneDeckDown;
s := A1;
tur := 1;
info:=TRUE;
end;
//****************************
Select(Spos : Index) is
if !>0 then
begin
Pull 1 to s;
Turn s[s!] side up;
if s=A1 then s:=A2 else s:=A1;
end
else if tur<3 then
begin
tur := tur + 1;
if tur=3 then [0]:=CrossCard;
Pull A1! from A1;
Pull 1 to A1;
Pull A2! from A2;
Pull 1 to A2;
Shuffle;
Turn [1..!] side down;
UpDate;
end;
//****************************
Help is
begin
Clear 'The Stock';
Write('Click here to deal a card to one of the pile in the Tableau Alternatly.\n\n');
Write('You have three pass to complete the game.\n');
Wait 'About...' About;
if Info then Wait 'Info...' UpDate;
WaitInfo;
end;
end D1;
predicate Win? is
return (A1!=0) and (A2!=0) and (D1!=0);
order D1, A1, A2, Discard;
title:='Maire'.