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   
OS/2 REXX Batch file  |  1995-04-12  |  6KB  |  297 lines

  1. /*
  2.  
  3.          MM_TicTacToe v1.0 © 1995 by Alessandro Zummo
  4.            $VER: TicTacToe v1.0 (28.3.95))
  5.  
  6.         Inspired by TicTacSpot by PSR Software
  7.  
  8. */
  9.  
  10. DROP MM.
  11.  
  12.  
  13. MM.PrgName = 'MM_TicTacToe 1.0'
  14. MM.TempFile= 'T:TicTacToe.temp'
  15.  
  16. PARSE UPPER ARG MM.Area MM.MsgNum
  17.  
  18. Address 'MAILMANAGER'
  19. Options Results
  20.  
  21. DROP MM.Msg.
  22.  
  23. MM.nl '0a'x
  24.  
  25. MM_ReadMsg MM.Area MM.MsgNum MM.Msg
  26. MM_WriteStem MM.TempFile MM.Msg.Text
  27.  
  28. say MM.TempFile
  29.  
  30. If ~Open('Inp',MM.TempFile,'r') Then Do
  31.    Requester('Error..','Cannot open temporary file: ' MM.TempFile,'Ok')
  32.    Exit
  33.    End
  34.  
  35. Do y=1 To 4
  36.    Do x=1 To 3
  37.       POS.x.y=' '
  38.    End
  39. End
  40.  
  41. Do Until Pos('* MM_TicTacToe',LINE)>0
  42.    If Eof('Inp') Then Do
  43.       a = Requester('Warning...','Message contains no MM_TicTacToe data!'MM.nl'Start new game?','*_Yes|_No')
  44.       If a=1 Then Do
  45.         Call Close('Inp')
  46.         Signal PlayMove
  47.       End
  48.       Exit
  49.    End
  50.    If Exists('Ram:Plop') then Exit
  51.    LINE=ReadLn('Inp')
  52. End
  53.  
  54. Call Readln('Inp')
  55. LINE.1=Readln('Inp')
  56. Call Readln('Inp')
  57. Call Readln('Inp')
  58. LINE.2=Readln('Inp')
  59. Call Readln('Inp')
  60. Call Readln('Inp')
  61. LINE.3=Readln('Inp')
  62.  
  63. Call Close('Inp')
  64.  
  65. Do y=1 To 3
  66.   Parse var LINE.y POS1' | 'POS2' | 'POS3
  67.   POS1=Right(POS1,2)
  68.   POS2=Left(POS2,2)
  69.   POS3=Left(POS3,2)
  70.   If POS1='/\' Then POS.1.y='o'
  71.   If POS1='\/' Then POS.1.y='x'
  72.   If POS2='/\' Then POS.2.y='o'
  73.   If POS2='\/' Then POS.2.y='x'
  74.   If POS3='/\' Then POS.3.y='o'
  75.   If POS3='\/' Then POS.3.y='x'
  76. End
  77.  
  78. PlayMove:
  79.  
  80.  
  81. a = Requester('Piece','Are you O or X?','_O | _X')
  82. If a=0 Then PIECE='x'
  83. If a=1 Then PIECE='o'
  84.  
  85. DONE=0
  86.  
  87. Do Until DONE=1
  88.   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
  89.   a = Requester('Top Row',board,'t_L|t_M|t_R|_Next|_Cancel')
  90.   If a=0 Then Exit
  91.   If a=1 Then If POS.1.1=' ' Then Do
  92.     DONE=1
  93.     POS.1.1=PIECE
  94.   End
  95.   IF a=2 Then If POS.2.1=' ' Then Do
  96.     DONE=1
  97.     POS.2.1=PIECE
  98.   End
  99.   If a=3 Then If POS.3.1=' ' Then Do
  100.     DONE=1
  101.     POS.3.1=PIECE
  102.   End
  103.   If a=4 Then Do Until DONE=1|RC=4
  104.       a = Requester('Middle Row',board,'m_L|m_M|m_R|_Next|_Cancel')
  105.     If a=0 Then Exit
  106.     If a=1 Then If POS.1.2=' ' Then Do
  107.       DONE=1
  108.       POS.1.2=PIECE
  109.     End
  110.     If a=2 Then If POS.2.2=' ' Then Do
  111.       DONE=1
  112.       POS.2.2=PIECE
  113.     End
  114.     If a=3 Then If POS.3.2=' ' Then Do
  115.       DONE=1
  116.       POS.3.2=PIECE
  117.     End
  118.     If a=4 Then Do Until DONE=1|RC=4
  119.         a = Requester('Bottom Row',board,'b_L|b_M|b_R|_Next|_Cancel')
  120.       If a=0 Then Exit
  121.       If a=1 Then If POS.1.3=' ' Then Do
  122.         DONE=1
  123.         POS.1.3=PIECE
  124.       End
  125.       If a=2 Then If POS.2.3=' ' Then Do
  126.         DONE=1
  127.         POS.2.3=PIECE
  128.       End
  129.       If a=3 Then If POS.3.3=' ' Then Do
  130.         DONE=1
  131.         POS.3.3=PIECE
  132.       End
  133.     End
  134.   End
  135. End
  136.  
  137. Call Open('Oup',MM.TempFile,'w')
  138.  
  139. LINE1=' >  '
  140. LINE2=' >  '
  141. LINE3=' >  '
  142. LINE4=' >  '
  143. LINE5=' >  '
  144. LINE6=' >  '
  145. If POS.1.1='x' Then Do
  146.   LINE1=LINE1||'\/ |'
  147.   LINE2=LINE2||'/\ |'
  148. End
  149. If POS.1.1='o' Then Do
  150.   LINE1=LINE1||'/\ |'
  151.   LINE2=LINE2||'\/ |'
  152. End
  153. If POS.1.1=' ' Then Do
  154.   LINE1=LINE1||'   |'
  155.   LINE2=LINE2||'   |'
  156. End
  157. If POS.2.1='x' Then Do
  158.   LINE1=LINE1||' \/ |'
  159.   LINE2=LINE2||' /\ |'
  160. End
  161. If POS.2.1='o' Then Do
  162.   LINE1=LINE1||' /\ |'
  163.   LINE2=LINE2||' \/ |'
  164. End
  165. If POS.2.1=' ' Then Do
  166.   LINE1=LINE1||'    |'
  167.   LINE2=LINE2||'    |'
  168. End
  169. If POS.3.1='x' Then Do
  170.   LINE1=LINE1||' \/'
  171.   LINE2=LINE2||' /\'
  172. End
  173. If POS.3.1='o' Then Do
  174.   LINE1=LINE1||' /\'
  175.   LINE2=LINE2||' \/'
  176. End
  177.  
  178. If POS.1.2='x' Then Do
  179.   LINE3=LINE3||'\/ |'
  180.   LINE4=LINE4||'/\ |'
  181. End
  182. If POS.1.2='o' Then Do
  183.   LINE3=LINE3||'/\ |'
  184.   LINE4=LINE4||'\/ |'
  185. End
  186. If POS.1.2=' ' Then Do
  187.   LINE3=LINE3||'   |'
  188.   LINE4=LINE4||'   |'
  189. End
  190. If POS.2.2='x' Then Do
  191.   LINE3=LINE3||' \/ |'
  192.   LINE4=LINE4||' /\ |'
  193. End
  194. If POS.2.2='o' Then Do
  195.   LINE3=LINE3||' /\ |'
  196.   LINE4=LINE4||' \/ |'
  197. End
  198. If POS.2.2=' ' Then Do
  199.   LINE3=LINE3||'    |'
  200.   LINE4=LINE4||'    |'
  201. End
  202. If POS.3.2='x' Then Do
  203.   LINE3=LINE3||' \/'
  204.   LINE4=LINE4||' /\'
  205. End
  206. If POS.3.2='o' Then Do
  207.   LINE3=LINE3||' /\'
  208.   LINE4=LINE4||' \/'
  209. End
  210. If POS.1.3='x' Then Do
  211.   LINE5=LINE5||'\/ |'
  212.   LINE6=LINE6||'/\ |'
  213. End
  214. If POS.1.3='o' Then Do
  215.   LINE5=LINE5||'/\ |'
  216.   LINE6=LINE6||'\/ |'
  217. End
  218. If POS.1.3=' ' Then Do
  219.   LINE5=LINE5||'   |'
  220.   LINE6=LINE6||'   |'
  221. End
  222. If POS.2.3='x' Then Do
  223.   LINE5=LINE5||' \/ |'
  224.   LINE6=LINE6||' /\ |'
  225. End
  226. If POS.2.3='o' Then Do
  227.   LINE5=LINE5||' /\ |'
  228.   LINE6=LINE6||' \/ |'
  229. End
  230. If POS.2.3=' ' Then Do
  231.   LINE5=LINE5||'    |'
  232.   LINE6=LINE6||'    |'
  233. End
  234. If POS.3.3='x' Then Do
  235.   LINE5=LINE5||' \/'
  236.   LINE6=LINE6||' /\'
  237. End
  238. If POS.3.3='o' Then Do
  239.   LINE5=LINE5||' /\'
  240.   LINE6=LINE6||' \/'
  241. End
  242.  
  243.   Call Writeln('Oup',' ')
  244.   Call Writeln('Oup',' > * MM_TicTacToe')
  245.   Call Writeln('Oup',' >')
  246.   Call Writeln('Oup',LINE1)
  247.   Call Writeln('Oup',LINE2)
  248.   Call Writeln('Oup',' > ----+----+----')
  249.   Call Writeln('Oup',LINE3)
  250.   Call Writeln('Oup',LINE4)
  251.   Call Writeln('Oup',' > ----+----+----')
  252.   Call Writeln('Oup',LINE5)
  253.   Call Writeln('Oup',LINE6)
  254.   Call Writeln('Oup',' ')  
  255.  
  256. Call Close('Oup')
  257.  
  258.  
  259. DROP Reply.
  260.  
  261. Reply.Subject = 'MM_TicTacToe'
  262. Reply.File    = MM.TempFile
  263. Reply.To      = MM.Msg.From
  264. Reply.ToAddr  = MM.Msg.FromAddr
  265. Reply.Tear    = MM.PrgName
  266.  
  267. MM_WriteMsg MM.Area Reply
  268.  
  269.  
  270. /*
  271.  > * MM_TicTacToe
  272.  >
  273.  >  \/ | /\ | \/
  274.  >  /\ | \/ | /\
  275.  > ----+----+----
  276.  >  \/ | /\ | \/
  277.  >  /\ | \/ | /\
  278.  > ----+----+----
  279.  >  \/ | /\ | \/
  280.  >  /\ | \/ | /\
  281.  
  282. */
  283.  
  284. exit
  285.  
  286. /* --------------------------------------------------------------------- */
  287.  
  288. Requester: PROCEDURE EXPOSE MM.
  289.  
  290. PARSE ARG Titolo, Testo, GadGets
  291. MM_Requester '"'Titolo'"' 'Testo' 'GadGets'
  292.  
  293. RETURN rc
  294.  
  295. /* --------------------------------------------------------------------- */
  296.  
  297.