home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Meeting Pearls 3
/
Meeting_Pearls_III.iso
/
Pearls
/
comm
/
Fido
/
MailManager
/
Contrib
/
Alessandro_Zummo
/
MM_TicTacToe.rexx
< prev
Wrap
OS/2 REXX Batch file
|
1995-04-12
|
6KB
|
297 lines
/*
MM_TicTacToe v1.0 © 1995 by Alessandro Zummo
$VER: TicTacToe v1.0 (28.3.95))
Inspired by TicTacSpot by PSR Software
*/
DROP MM.
MM.PrgName = 'MM_TicTacToe 1.0'
MM.TempFile= 'T:TicTacToe.temp'
PARSE UPPER ARG MM.Area MM.MsgNum
Address 'MAILMANAGER'
Options Results
DROP MM.Msg.
MM.nl '0a'x
MM_ReadMsg MM.Area MM.MsgNum MM.Msg
MM_WriteStem MM.TempFile MM.Msg.Text
say MM.TempFile
If ~Open('Inp',MM.TempFile,'r') Then Do
Requester('Error..','Cannot open temporary file: ' MM.TempFile,'Ok')
Exit
End
Do y=1 To 4
Do x=1 To 3
POS.x.y=' '
End
End
Do Until Pos('* MM_TicTacToe',LINE)>0
If Eof('Inp') Then Do
a = Requester('Warning...','Message contains no MM_TicTacToe data!'MM.nl'Start new game?','*_Yes|_No')
If a=1 Then Do
Call Close('Inp')
Signal PlayMove
End
Exit
End
If Exists('Ram:Plop') then Exit
LINE=ReadLn('Inp')
End
Call Readln('Inp')
LINE.1=Readln('Inp')
Call Readln('Inp')
Call Readln('Inp')
LINE.2=Readln('Inp')
Call Readln('Inp')
Call Readln('Inp')
LINE.3=Readln('Inp')
Call Close('Inp')
Do y=1 To 3
Parse var LINE.y POS1' | 'POS2' | 'POS3
POS1=Right(POS1,2)
POS2=Left(POS2,2)
POS3=Left(POS3,2)
If POS1='/\' Then POS.1.y='o'
If POS1='\/' Then POS.1.y='x'
If POS2='/\' Then POS.2.y='o'
If POS2='\/' Then POS.2.y='x'
If POS3='/\' Then POS.3.y='o'
If POS3='\/' Then POS.3.y='x'
End
PlayMove:
a = Requester('Piece','Are you O or X?','_O | _X')
If a=0 Then PIECE='x'
If a=1 Then PIECE='o'
DONE=0
Do Until DONE=1
BOARD=POS.1.1 || '|' || POS.2.1 || '|' || POS.3.1 || '0a'x || POS.1.2 || '[' || POS.2.2 || ']' || POS.3.2 || '0a'x || POS.1.3 || '|' || POS.2.3 || '|' || POS.3.3
a = Requester('Top Row',board,'t_L|t_M|t_R|_Next|_Cancel')
If a=0 Then Exit
If a=1 Then If POS.1.1=' ' Then Do
DONE=1
POS.1.1=PIECE
End
IF a=2 Then If POS.2.1=' ' Then Do
DONE=1
POS.2.1=PIECE
End
If a=3 Then If POS.3.1=' ' Then Do
DONE=1
POS.3.1=PIECE
End
If a=4 Then Do Until DONE=1|RC=4
a = Requester('Middle Row',board,'m_L|m_M|m_R|_Next|_Cancel')
If a=0 Then Exit
If a=1 Then If POS.1.2=' ' Then Do
DONE=1
POS.1.2=PIECE
End
If a=2 Then If POS.2.2=' ' Then Do
DONE=1
POS.2.2=PIECE
End
If a=3 Then If POS.3.2=' ' Then Do
DONE=1
POS.3.2=PIECE
End
If a=4 Then Do Until DONE=1|RC=4
a = Requester('Bottom Row',board,'b_L|b_M|b_R|_Next|_Cancel')
If a=0 Then Exit
If a=1 Then If POS.1.3=' ' Then Do
DONE=1
POS.1.3=PIECE
End
If a=2 Then If POS.2.3=' ' Then Do
DONE=1
POS.2.3=PIECE
End
If a=3 Then If POS.3.3=' ' Then Do
DONE=1
POS.3.3=PIECE
End
End
End
End
Call Open('Oup',MM.TempFile,'w')
LINE1=' > '
LINE2=' > '
LINE3=' > '
LINE4=' > '
LINE5=' > '
LINE6=' > '
If POS.1.1='x' Then Do
LINE1=LINE1||'\/ |'
LINE2=LINE2||'/\ |'
End
If POS.1.1='o' Then Do
LINE1=LINE1||'/\ |'
LINE2=LINE2||'\/ |'
End
If POS.1.1=' ' Then Do
LINE1=LINE1||' |'
LINE2=LINE2||' |'
End
If POS.2.1='x' Then Do
LINE1=LINE1||' \/ |'
LINE2=LINE2||' /\ |'
End
If POS.2.1='o' Then Do
LINE1=LINE1||' /\ |'
LINE2=LINE2||' \/ |'
End
If POS.2.1=' ' Then Do
LINE1=LINE1||' |'
LINE2=LINE2||' |'
End
If POS.3.1='x' Then Do
LINE1=LINE1||' \/'
LINE2=LINE2||' /\'
End
If POS.3.1='o' Then Do
LINE1=LINE1||' /\'
LINE2=LINE2||' \/'
End
If POS.1.2='x' Then Do
LINE3=LINE3||'\/ |'
LINE4=LINE4||'/\ |'
End
If POS.1.2='o' Then Do
LINE3=LINE3||'/\ |'
LINE4=LINE4||'\/ |'
End
If POS.1.2=' ' Then Do
LINE3=LINE3||' |'
LINE4=LINE4||' |'
End
If POS.2.2='x' Then Do
LINE3=LINE3||' \/ |'
LINE4=LINE4||' /\ |'
End
If POS.2.2='o' Then Do
LINE3=LINE3||' /\ |'
LINE4=LINE4||' \/ |'
End
If POS.2.2=' ' Then Do
LINE3=LINE3||' |'
LINE4=LINE4||' |'
End
If POS.3.2='x' Then Do
LINE3=LINE3||' \/'
LINE4=LINE4||' /\'
End
If POS.3.2='o' Then Do
LINE3=LINE3||' /\'
LINE4=LINE4||' \/'
End
If POS.1.3='x' Then Do
LINE5=LINE5||'\/ |'
LINE6=LINE6||'/\ |'
End
If POS.1.3='o' Then Do
LINE5=LINE5||'/\ |'
LINE6=LINE6||'\/ |'
End
If POS.1.3=' ' Then Do
LINE5=LINE5||' |'
LINE6=LINE6||' |'
End
If POS.2.3='x' Then Do
LINE5=LINE5||' \/ |'
LINE6=LINE6||' /\ |'
End
If POS.2.3='o' Then Do
LINE5=LINE5||' /\ |'
LINE6=LINE6||' \/ |'
End
If POS.2.3=' ' Then Do
LINE5=LINE5||' |'
LINE6=LINE6||' |'
End
If POS.3.3='x' Then Do
LINE5=LINE5||' \/'
LINE6=LINE6||' /\'
End
If POS.3.3='o' Then Do
LINE5=LINE5||' /\'
LINE6=LINE6||' \/'
End
Call Writeln('Oup',' ')
Call Writeln('Oup',' > * MM_TicTacToe')
Call Writeln('Oup',' >')
Call Writeln('Oup',LINE1)
Call Writeln('Oup',LINE2)
Call Writeln('Oup',' > ----+----+----')
Call Writeln('Oup',LINE3)
Call Writeln('Oup',LINE4)
Call Writeln('Oup',' > ----+----+----')
Call Writeln('Oup',LINE5)
Call Writeln('Oup',LINE6)
Call Writeln('Oup',' ')
Call Close('Oup')
DROP Reply.
Reply.Subject = 'MM_TicTacToe'
Reply.File = MM.TempFile
Reply.To = MM.Msg.From
Reply.ToAddr = MM.Msg.FromAddr
Reply.Tear = MM.PrgName
MM_WriteMsg MM.Area Reply
/*
> * MM_TicTacToe
>
> \/ | /\ | \/
> /\ | \/ | /\
> ----+----+----
> \/ | /\ | \/
> /\ | \/ | /\
> ----+----+----
> \/ | /\ | \/
> /\ | \/ | /\
*/
exit
/* --------------------------------------------------------------------- */
Requester: PROCEDURE EXPOSE MM.
PARSE ARG Titolo, Testo, GadGets
MM_Requester '"'Titolo'"' 'Testo' 'GadGets'
RETURN rc
/* --------------------------------------------------------------------- */