home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Workbench / Fonts / OUTLINE / P.LHA / pixie / PIXIE.BAS (.txt) next >
Encoding:
GW-BASIC  |  1993-06-03  |  4.4 KB  |  172 lines

  1. 10  DIM A%[22]:REM reserve for code string
  2. 20  'FILL CODE STRING
  3. 30  FOR I=0 TO 21:READ A%[I]:NEXT I
  4. 40  DATA &h8B55, &hB8EC, &h0600, &h07B7, &h768B, &h8A0C, &h8B2C
  5. 50  DATA &hA76, &hC8A, &h768B, &h8A08, &h8B34, &h676, &h148A
  6. 60  DATA &hCDFE, &hC9FE, &hCEFE, &hCAFE, &h10CD, &hCA5d, &h8, &h0
  7. 70  ' R1, C1 is upper row, column
  8. 80  ' R2, C2 is lower row, column to blank
  9. 90  DEF SEG=&HB000
  10. 100  RANDOMIZE CVI(MID$(TIME$,7,2))
  11. 110  LET N=5
  12. 120  LET G=10
  13. 130  GOSUB 1190 'INTRODUCTION DISPLAY
  14. 140  GOSUB 930
  15. 150  A=RND
  16. 160  A=INT(G*A)
  17. 170  B=RND
  18. 180  B=INT(G*B)
  19. 190  FOR K=1 TO N
  20. 200  IF K=2 THEN GOSUB 390
  21. 210  LOCATE 1,1:PRINT "Guess #";K;
  22. 220  LOCATE 2,1:PRINT "               "
  23. 230  LOCATE 2,1:INPUT X,Y
  24. 240  IF X>9 OR Y>9 THEN PRINT "NUMBERS LESS THEN 10 PLEASE!":GOTO 210
  25. 250  GOSUB 780
  26. 260  IF ABS(X-A)+ABS(Y-B)=0 THEN GOTO 410
  27. 270  'PRINT INFO
  28. 280  GOSUB 510
  29. 290  LOCATE 1,1:PRINT
  30. 300  NEXT K
  31. 310  LOCATE 18,1:PRINT
  32. 320  LOCATE 18,1:PRINT "Sorry, that's ";N;" guesses."
  33. 330  LOCATE 19,1:PRINT "The Pixie is at ";A;",";B
  34. 340  FOR R=1 TO 1500:NEXT R
  35. 350  R1%=1:C1%=37:R2%=78:C2%=23:GOSUB 840
  36. 360  GOSUB 950
  37. 370  LOCATE 20,1:PRINT "Lets play again. Pixie is hiding."
  38. 380  GOTO 150
  39. 390  R1%=18:C1%=1:R2%=20:C2%=36:GOSUB 840
  40. 400  RETURN
  41. 410  LOCATE (21-(Y*2)),(43+(4*X)):COLOR 31:PRINT CHR$(2)
  42. 420  LOCATE 1,1:COLOR 7:PRINT "See, you found him. In ";K;" guesses."
  43. 430  FOR I=1 TO 25:SOUND RND*1000+37,1:NEXT I
  44. 440  R1%=2:C1%=1:R2%=3:C2%=36:GOSUB 840
  45. 450  LOCATE 4,1:INPUT "DO YOU WISH TO PLAY AGAIN ";Q$
  46. 460  IF LEFT$(Q$,1)="Y" OR LEFT$(Q$,1)="y" THEN 470 ELSE 650
  47. 470  R1%=1:C1%=37:R2%=78:C2%=23:GOSUB 840
  48. 480  GOSUB 950
  49. 490  R1%=1:C2%=1:R2%=4:C2%=36:GOSUB 840
  50. 500  GOTO 370
  51. 510  R1%=15:C1%=1:R2%=15:C2%=36:GOSUB 840
  52. 520  LOCATE 15,1:PRINT "Go ";
  53. 530  IF Y=B THEN GOTO 580
  54. 540  IF Y<B THEN GOTO 570
  55. 550  PRINT "SOUTH";
  56. 560  GOTO 580
  57. 570  PRINT "NORTH";
  58. 580  IF X=A THEN GOTO 630
  59. 590  IF X<A THEN GOTO 620
  60. 600  PRINT "WEST";
  61. 610  GOTO 630
  62. 620  PRINT "EAST";
  63. 630  '
  64. 640  RETURN
  65. 650  IF C=0 THEN OPEN "PIXIENM" FOR OUTPUT AS #1:ELSE GOTO 720
  66. 660  FOR I=1 TO 10:IF A$(I)="" THEN A$(I)=B$:A(I)=K:GOTO 680:ELSE NEXT I
  67. 670  ON ERROR GOTO 710
  68. 680  FOR I=1 TO 10:WRITE #1,A$(I):WRITE #1,A(I):NEXT I
  69. 690  CLOSE #1
  70. 700  GOTO 770
  71. 710  RESUME 770
  72. 720  OPEN "PIXIENM" FOR OUTPUT AS #1
  73. 730  LET A$(P)=B$:LET A(P)=K
  74. 740  FOR I=1 TO 10:WRITE #1,A$(I):WRITE #1,A(I):NEXT I
  75. 750  CLOSE #1
  76. 760  GOTO 770
  77. 770  PRINT "GOODBYE":END
  78. 780  'INDICATE SELECTED GRIDPOINT
  79. 790  YCORD=21-(Y*2) :XCORD=43+(4*X)
  80. 800  YCORD(II)=YCORD:XCORD(II)=XCORD
  81. 810  LOCATE YCORD,XCORD:PRINT CHR$(15)
  82. 820  RETURN
  83. 830  'CLEAR SECTION OF SCREEN
  84. 840  GOSUB 860 : REM run blank subroutine
  85. 850  DEF SEG=&HB000:RETURN
  86. 860  REM The actual subroutine is here.
  87. 870  DEF SEG : SUBRT%=VARPTR(A%[0])
  88. 880  CALL SUBRT%(R1%,C1%,R2%,C2%)
  89. 890  RETURN
  90. 900  '
  91. 910  '
  92. 920  '
  93. 930  'GRID CONSTRUCTION
  94. 940  CLS
  95. 950  FOR J=1 TO 9
  96. 960  FOR K=40 TO 80
  97. 970  LOCATE 2+(2*J),K:PRINT CHR$(220)
  98. 980  NEXT K
  99. 990  NEXT J
  100. 1000  FOR J=1 TO 9
  101. 1010  FOR K=2 TO 22
  102. 1020  LOCATE K,41+4*J:PRINT CHR$(221)
  103. 1030  NEXT K
  104. 1040  NEXT J
  105. 1050  K=45
  106. 1060  FOR J=0 TO 8
  107. 1070  LOCATE 23,42+(4*J):PRINT J
  108. 1080  K=K+4
  109. 1090  NEXT J
  110. 1100  POKE 3676,57
  111. 1110  K=9
  112. 1120  FOR J=1 TO 10
  113. 1130  LOCATE 1+(2*J),38:PRINT K
  114. 1140  K=K-1
  115. 1150  NEXT J
  116. 1160  LOCATE 1,60:PRINT "NORTH"
  117. 1170  LOCATE 12,33:PRINT "WEST"
  118. 1180  RETURN
  119. 1190  COLOR 3
  120. 1200  KEY OFF:CLS:GOTO 1220
  121. 1210  CLS
  122. 1220  FOR J=2 TO 22
  123. 1230  LOCATE 2,2:PRINT CHR$(201):LOCATE 2,79:PRINT CHR$(187)
  124. 1240  LOCATE 23,2:PRINT CHR$(200):LOCATE 23,79:PRINT CHR$(188)
  125. 1250  LOCATE J,2:PRINT CHR$(186)
  126. 1260  LOCATE J,79:PRINT CHR$(186)
  127. 1270  NEXT J
  128. 1280  FOR J=3 TO 78
  129. 1290  LOCATE 2,J:PRINT CHR$(205)
  130. 1300  LOCATE 23,J:PRINT CHR$(205)
  131. 1310  NEXT J
  132. 1320  COLOR 2
  133. 1330  LOCATE 4,4:PRINT "W E L C O M E   T O . . ."
  134. 1340  LOCATE 8,30:PRINT "F I N D   T H E   P I X I E"
  135. 1350  LOCATE 10,4:PRINT "A Pixie is hiding in the woods.  The woods are marked off in"
  136. 1360  LOCATE 11,4:PRINT "a 10 by 10 grid and any gridpoint is a pair of whole numbers"
  137. 1370  LOCATE 12,4:PRINT "separated by a comma.  Try to guess the Pixie's gridpoint."
  138. 1380  LOCATE 13,4:PRINT "You get ";N;" tries. After each try, I will tell you the"
  139. 1390  LOCATE 14,4:PRINT "approximate direction to go to look for the Pixie. Name the"
  140. 1400  LOCATE 15,4:PRINT "horizontal co-ordinate first, then the vertical co-ordinate."
  141. 1410  LOCATE 16,4:INPUT "          WHAT IS YOUR NAME  ";B$
  142. 1420  LET C=1
  143. 1430  ON ERROR GOTO 1580
  144. 1440  OPEN "PIXIENM" FOR INPUT AS #1
  145. 1450  FOR I=1 TO 10:INPUT #1,A$(I):INPUT #1,A(I)
  146. 1460  NEXT I
  147. 1470  R1%=4:C1%=4:R2%=18:C2%=77:GOSUB 830
  148. 1480  FOR I=1 TO 10:IF LEFT$(A$(I),3)=LEFT$(B$,3) THEN LOCATE 6,4:PRINT "YOUR LAST SCORE WAS ";A(I):P=I:GOTO 1500:ELSE NEXT I
  149. 1490  LOCATE 6,4:PRINT "THIS MUST BE YOUR FIRST TIME ";B$;" GOOD LUCK!":C=0
  150. 1500  CLOSE #1
  151. 1510  LOCATE 8,4:INPUT "DO YOU WISH TO SEE PREVIOUS SCORES FOR ALL ";W$
  152. 1520  IF LEFT$(W$,1)<>"Y" THEN GOTO 1540:ELSE FOR I=1 TO 10:LOCATE (8+I),4
  153. 1530  IF A$(I)>"" THEN PRINT A$(I);A(I):NEXT
  154. 1540  LOCATE 20,10:PRINT "Press space bar to continue."
  155. 1550  P$=INKEY$:IF P$="" THEN 1550
  156. 1560  CLS:RETURN
  157. 1570  'ERROR ROUTINE
  158. 1580  IF ERR=53 THEN GOTO 1590
  159. 1590  CLS
  160. 1600  LOCATE 12,30
  161. 1610  PRINT "FILE FOR SCORING DOES NOT EXIST."
  162. 1620  PRINT TAB(30)"STANDBY, FILE BEING CREATED."
  163. 1630  OPEN "PIXIENM" FOR OUTPUT AS #1
  164. 1640  FOR I=1 TO 10:WRITE #1,A$(I),A(I):NEXT I
  165. 1650  CLOSE #1:C=0
  166. 1660  RESUME 1540
  167. 1700  '*************************************************************************
  168. 1710  '  PIXIE BY TOM BLACKFORD
  169. 1720  '  CHESTERLAND, OHIO                     PHONE (216) 729-4944
  170. 1730  '      FOR USE BY THE GREATER CLEVELAND PC USERS GROUP
  171. 1740  '*************************************************************************
  172.