home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 5 / ctrom5b.zip / ctrom5b / PROGRAM / DIVERSEN / TIPI2A / HANGMAN.TPI < prev    next >
Text File  |  1994-09-13  |  3KB  |  160 lines

  1. # HANGMAN.TPI
  2. # by Kent Peterson
  3.  
  4. define head
  5.  1 3 locate 1 chr$ print$
  6. enddef
  7.  
  8. define shoulders
  9.  2 3 locate 206 chr$ print$
  10. enddef
  11.  
  12. define hips
  13.  3 3 locate 202 chr$ print$
  14. enddef
  15.  
  16. define leftarm
  17.  2 2 locate 201 chr$ print$
  18. enddef
  19.  
  20. define leftleg
  21.  3 2 locate 201 chr$ print$
  22.  4 2 locate 188 chr$ print$
  23. enddef
  24.  
  25. define rightleg
  26.  3 4 locate 187 chr$ print$
  27.  4 4 locate 200 chr$ print$
  28. enddef
  29.  
  30. define rightarm
  31.  2 4 locate 187 chr$ print$
  32. enddef
  33.  
  34. define gallows
  35.  0 0 locate
  36.  214 chr$ print$
  37.  2 do
  38.   196 chr$ print$
  39.  loop
  40.  191 chr$ print$ cr
  41.  4 do
  42.   186 chr$ print$ cr
  43.  loop
  44.  200 chr$ print$
  45.  4 do
  46.   205 chr$ print$
  47.  loop
  48. enddef
  49.  
  50. defstr word$
  51. defstr used$
  52.  
  53. define pickword
  54.  "R" "HANGWORD.TXT" 1 open
  55.  1 isinput
  56.  1 EOF FILEPOS 10 -
  57.  dup 0 < if | HANGWORD.TXT not found!
  58.             | program aborting!
  59.             bye
  60.          endif
  61.  random 1 swap filepos drop
  62.  get$ drop$ get$ dup$ "<END>" =$
  63.  if drop$ 1 1 filepos get$ drop$ get$ endif
  64.  1 close
  65.  console isinput
  66.  lcase$
  67.  word$ store
  68.  "" used$ store
  69. enddef
  70.  
  71. deftable drawpart
  72.  head shoulders leftarm rightarm hips leftleg rightleg
  73. endtable
  74.  
  75. define drawman
  76. # draws parts of the man depending
  77. # on n
  78.  0 cursor drawpart 1 cursor
  79. enddef
  80.  
  81. define isupper? ( -- n )
  82.                 ( a$ -- a$ )
  83. # n is true if a$ is uppercase
  84.  asc 64 >
  85.  if asc 91 <
  86.   if 1 else 0 endif
  87.  else 0 endif
  88. enddef
  89.  
  90. define display
  91.  word$ fetch len
  92.  do
  93.   len 1 + index -
  94.   dup$ 1 mid$ isupper? if print$
  95.   else drop$ "-" print$ endif
  96.   " " print$
  97.  loop
  98.  drop$
  99. enddef
  100.  
  101. define message
  102.  1 10 locate print$
  103. enddef
  104.  
  105. define hangman
  106. cls
  107. pickword
  108. gallows
  109. 5 10 locate display
  110. begin
  111.  "Guess a letter." message
  112.  begin
  113.   key dup if dup endif
  114.  until
  115.  "                   " message
  116. dup 27 = if cls bye endif
  117. word$ fetch dup$
  118. dup chr$ lcase$ dup$ ucase$ replace$
  119. dup$ word$ store
  120.  =$ if chr$ ucase$
  121.        used$ fetch swap$ +$
  122.        used$ dup$ store
  123.        len dup drawman
  124.        3 10 locate print$
  125.        7 = if
  126.          "Sorry, You Lose!"
  127.          message
  128.          begin
  129.           key
  130.          until
  131.          word$ fetch ucase$
  132.          word$ store
  133.          5 10 locate display
  134.          "LOST" word$ store
  135.         endif
  136.     else drop 5 10 locate display
  137.     endif
  138. word$ fetch dup$ ucase$ =$
  139. until
  140. "LOST" word$ fetch =$ not if
  141.  "You Win!!!                "
  142.  message
  143. endif
  144. begin
  145.  key
  146. until
  147. enddef
  148.  
  149. randomize
  150. begin
  151.  hangman
  152.  "Would you like to play again?"
  153.  message
  154.  begin
  155.   key dup if dup endif
  156.  until
  157.  chr$ ucase$ 1 left$ "Y" =$ not
  158. until
  159. cls
  160.