home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib19a.dsk / MAY.1984 / ANT.RACE.bas next >
BASIC Source File  |  2023-02-26  |  9KB  |  181 lines

  1. 10  REM  **********************
  2. 20  REM  *      ANT RACE      *
  3. 30  REM  *   BY BILL LAZENBY  *
  4. 40  REM  *FOR //E WITH 80 COLS*
  5. 50  REM  * COPYRIGHT (C) 1984 *
  6. 60  REM  * BY MICROSPARC, INC *
  7. 70  REM  * LINCOLN, MA. 01773 *
  8. 80  REM  **********************
  9. 90  ONERR  GOTO 1750
  10. 100  PRINT  CHR$(4)"PR#3": PRINT  CHR$(4)"VERIFY HANT"
  11. 110 P =  -16336:RN = 0:NQ = 0
  12. 120  DIM A$(8),AD(8)
  13. 130  FOR Z = 1 TO 8: READ A$(Z): NEXT Z
  14. 140  GOSUB 1580
  15. 150  ONERR  GOTO 160
  16. 160  TEXT : HOME : VTAB 8: HTAB 5: INPUT "H o w   m a n y   w i s h   t o   e n t e r   t h e   t r a c k ?  ";NP
  17. 170  IF NP <1  THEN  PRINT " R E A L L Y   N O W ! ! ! ! ! ": END 
  18. 180  DIM T(NP),B(NP),M(NP),Q(NP)
  19. 190  POKE 216,0
  20. 200  REM   ****** PRINT-UP OF THE ODDS AND ANT NAMES ******
  21. 210  FOR G = 1 TO NP:T(G) = 1000: NEXT G
  22. 220  HOME : VTAB 2: HTAB 26: PRINT " A n t v i l l e   T i m e s "
  23. 230  FOR T = 4 TO 21: VTAB T: POKE 1403,23: PRINT "|": VTAB T: POKE 1403,54: PRINT "|": NEXT T
  24. 240  VTAB 3: HTAB 24: PRINT "++++++++++++++++++++++++++++++++": REM 32 +S
  25. 250  VTAB 4: POKE 1403,26: PRINT "#": VTAB 4: POKE 1403,34: PRINT "N A M E": VTAB 4: POKE 1403,49: PRINT "ODDS"
  26. 260  VTAB 5: POKE 1403,24: PRINT "------------------------------": REM 30 -S
  27. 270  FOR Z = 1 TO 8
  28. 280  VTAB 4 +2 *Z
  29. 290  POKE 1403,26: PRINT Z
  30. 300  VTAB 4 +2 *Z
  31. 310  POKE 1403,31: PRINT A$(Z)
  32. 320 AD(Z) =  INT( RND(1) *50 +1)
  33. 330  VTAB 4 +2 *Z
  34. 340  POKE 1403,51 - LEN( STR$(AD(Z))): PRINT AD(Z);":1"
  35. 350  NEXT Z
  36. 360  VTAB 21: HTAB 24: PRINT "++++++++++++++++++++++++++++++++": REM 32 +S
  37. 370 RN = RN +1
  38. 380  REM  ****** LOOP OF PLAYER BETTING INPUT ******
  39. 390  FOR Z = 1 TO NP: IF T(Z) < = 0  THEN 530
  40. 400  VTAB 22: POKE 1403,0: PRINT " P l a y e r # ";Z:: POKE 1403,51: VTAB 22: PRINT "M o n e y = $ ";T(Z);"           "
  41. 410  VTAB 23: HTAB 38: PRINT "                              ": REM 30 SPACES
  42. 420  VTAB 23: POKE  -16368,0: INPUT "Which Ant do you wish to bet on? (#)  ";B$(Z)
  43. 430  FOR QY = 1 TO 8: IF B$(Z) =  STR$(QY)  THEN 440: NEXT QY: GOTO 420
  44. 440 B(Z) =  INT( VAL(B$(Z)))
  45. 450  IF B(Z) <1  OR B(Z) >8  THEN  VTAB 23: PRINT "There is no such Ant in this race.  Choose again.": FOR HH = 1 TO 777: NEXT HH: GOTO 410
  46. 460  VTAB 23: HTAB 38: PRINT "                              ": REM 30 SPACES
  47. 470  VTAB 23: INPUT "How much do you wish to place on it?  ";M$(Z)
  48. 480 M(Z) =  VAL(M$(Z))
  49. 490  IF M(Z) >T(Z)  THEN M(Z) = T(Z)
  50. 500  IF M(Z) <0  THEN  VTAB 23: PRINT "That type of behavior is not acceptable in this environment, SO DON'T DO IT!!!":M(Z) = 0: FOR TY = 1 TO 900: NEXT TY:T(Z) =  INT(.1 *T(Z))
  51. 510  VTAB 23: CALL  -868
  52. 520 M(Z) =  INT(M(Z) *100) *.01
  53. 530  NEXT Z
  54. 540  REM  ****** THIS IS WHERE THE ACTUAL RACING TAKES PLACE ******
  55. 550  HOME 
  56. 560 LL = 0
  57. 570  VTAB 1: PRINT " |START+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++FINISH|": REM 80 CHARACTERS
  58. 580  PRINT " |****************************************************************************| ": REM TOTAL 80 CHARACTERS BETWEEN QUOTES
  59. 590  FOR Z = 3 TO 22: VTAB Z: POKE 1403,1: PRINT "|": VTAB Z: POKE 1403,78: PRINT "": NEXT Z
  60. 600  VTAB 23: PRINT " |****************************************************************************|  |*********************>   A N T S F E E T    P A R K   <*********************|";: REM 2 80 CHARACTER LINES
  61. 610  FOR Z = 1 TO 8
  62. 620  VTAB Z *2 +3: POKE 1403,J(Z): PRINT " "
  63. 630 J(Z) = J(Z) + INT( RND(1) *(11 -(AD(Z) *.01) *4)) +2
  64. 640  IF J(Z) >78  THEN ID = 7: GOTO 690
  65. 650 K(Z) = J(Z)
  66. 660  IF LL = 0  THEN J(Z) = 0
  67. 670  VTAB Z *2 +3: POKE 1403,J(Z): PRINT Z
  68. 680  IF Z < >1  AND Z < >5  AND LL < >0  THEN WE =  PEEK(P) - PEEK(P) + PEEK(P) - PEEK(P)
  69. 690  NEXT Z
  70. 700 LL = 888
  71. 710  IF ID = 7  THEN ID = 0: GOTO 740
  72. 720  GOTO 610
  73. 730  REM  ****** DETERMINATION OF THE ORDER OF FINISH ******
  74. 740  FOR O = 1 TO 8
  75. 750 X = 1
  76. 760  FOR Y = 2 TO 8
  77. 770  IF J(Y) = J(X)  THEN 850
  78. 780  IF J(X) >J(Y)  THEN W(O) = X: NEXT Y
  79. 790  IF J(Y) >J(X)  THEN W(O) = Y:X = Y: NEXT Y
  80. 800  REM 
  81. 810 JK(W(O)) = J(W(O))
  82. 820 J(W(O)) = 0
  83. 830  NEXT O
  84. 840  GOTO 890
  85. 850 Z =  INT( RND(1) *2)
  86. 860  IF Z <1  THEN W(O) = X: NEXT Y
  87. 870  IF Z >0  THEN W(O) = Y:X = Y: NEXT Y
  88. 880  GOTO 800
  89. 890  REM  ****** DISPLAY OF FINISH AND WINNINGS FOR EACH PLAYER ******
  90. 900  FOR E = 1 TO 8:WM(E) = JK(W(1)) -JK(E): NEXT E
  91. 910  HOME 
  92. 920  VTAB 1: HTAB 3: PRINT " R A C E   # ";RN
  93. 930  VTAB 3: PRINT " PLACE |  #  |      N A M E       |  PAYING  |  LENGTHS"
  94. 940  VTAB 4: PRINT "+++++++|+++++|++++++++++++++++++++|++++++++++|++++++++++"
  95. 950  FOR Z = 1 TO 8
  96. 960  VTAB 3 +2 *Z: PRINT "   ";Z;"   |  ";W(Z);"  |   ";A$(W(Z))
  97. 970  POKE 1403,34: VTAB 3 +2 *Z: PRINT "|": VTAB 3 +2 *Z: POKE 1403,41 - LEN( STR$(AD(W(Z)))): PRINT AD(W(Z))
  98. 980  VTAB 3 +2 *Z: POKE 1403,45: PRINT "|    ": POKE 1403,51 - LEN( STR$(WM(W(Z)))): VTAB 3 +2 *Z: IF Z = 1  THEN  PRINT "-": GOTO 1000
  99. 990  PRINT WM(W(Z))
  100. 1000  VTAB 3 +2 *Z +1: PRINT "-------|-----|--------------------|----------|---------"
  101. 1010  NEXT Z
  102. 1020  FOR Z = 1 TO NP
  103. 1030  IF T(Z) < = 0  THEN 1220
  104. 1040  FOR Q = 1 TO 8: IF B(Z) = W(Q)  THEN  VTAB 3 +2 *Q: POKE 1403,58: PRINT "<--":WB = Q: GOTO 1060
  105. 1050  NEXT Q
  106. 1060  POKE 1403,3
  107. 1070  VTAB 22: PRINT " P l a y e r   # ";Z
  108. 1080  IF B(Z) = W(1)  THEN Q(Z) = (M(Z) *AD(W(1))):T(Z) = T(Z) +Q(Z): GOTO 1130
  109. 1090  IF B(Z) = W(2)  THEN Q(Z) = (M(Z) *AD(W(2)) *.57):T(Z) = T(Z) +Q(Z): GOTO 1130
  110. 1100  IF B(Z) = W(3)  THEN Q(Z) = (M(Z) *AD(W(2)) *.23):T(Z) = T(Z) +Q(Z): GOTO 1130
  111. 1110  VTAB 23: PRINT " L O S T : ";M(Z);"                              ":T(Z) = T(Z) -M(Z)
  112. 1120  GOTO 1150
  113. 1130 Q(Z) =  INT(Q(Z) *100) *.01
  114. 1140  VTAB 23: PRINT " W O N ! : ";Q(Z);"                              "
  115. 1150  VTAB 23: POKE 1403,42: PRINT "                                   "
  116. 1160 T(Z) =  INT(T(Z) *100) *.01
  117. 1170  VTAB 23: POKE 1403,39: PRINT "T O T A L   M O N E Y = $ ";T(Z)
  118. 1180  IF T(Z) < = 0  THEN  VTAB 23: PRINT "Now that you have no money, you have no reason to keep betting....             ":NQ = NQ +1
  119. 1190  VTAB 1: POKE 1403,68: PRINT "<Q> to quit": VTAB 2: POKE 1403,74: POKE  -16368,0: GET V$: IF V$ = "Q"  THEN ET(Z) = T(Z):T(Z) = 0:NQ = NQ +1
  120. 1200  IF NQ > = NP  THEN 1260
  121. 1210  VTAB 3 +2 *WB: POKE 1403,58: PRINT "      "
  122. 1220  NEXT Z
  123. 1230  REM  ****** END OF DAY RESULTS FOR EACH PLAYER ******
  124. 1240  HOME 
  125. 1250  GOTO 220
  126. 1260  FOR Z = 1 TO NP
  127. 1270  HOME 
  128. 1280  VTAB 15: POKE 1403,25: PRINT "P l a y e r # ";Z
  129. 1290  VTAB 17: POKE 1403,40: PRINT " W O N -- $";ET(Z)
  130. 1300  IF ET(Z) >HT(6)  THEN  GOSUB 1360
  131. 1310  NEXT Z
  132. 1320  GOSUB 1580
  133. 1330  REM  ****** THE NAMES IN THE DATA STATEMENT MAY BE CHANGED EASILY ******
  134. 1340  DATA  "A r t  V a r k","   A t o m    ","Round th' Bend","  Led   Foot  ","  Doo  Goody  ","Up  for  Grabs","Out'a  Luck...","Found the Dirt"
  135. 1350  RETURN 
  136. 1360  REM  ******HIGH SCORE AREA AND TEXT FILE GENERATOR******
  137. 1370  FOR L = 6 TO 1  STEP  -1
  138. 1380  IF ET(Z) <HT(L)  THEN 1400
  139. 1390  NEXT L
  140. 1400  FOR M = 6 TO L +1  STEP  -1
  141. 1410 HN$(M) = HN$(M -1)
  142. 1420 HT(M) = HT(M -1)
  143. 1430  NEXT M
  144. 1440 HT(L +1) = ET(Z)
  145. 1450  VTAB 21: POKE 1403,25: INVERSE : PRINT " E N T E R   I N I T I A L S "
  146. 1460  NORMAL 
  147. 1470 HN$(L +1) = ""
  148. 1480  FOR JK = 1 TO 3: VTAB 22: POKE 1403,38 +JK: POKE  -16368,0: GET IH$:HN$(L +1) = HN$(L +1) +IH$: POKE 1403,38 +JK: VTAB 22: PRINT IH$: NEXT JK
  149. 1490 D$ =  CHR$(4)
  150. 1500  PRINT D$;"OPEN HANT": PRINT D$;"CLOSE HANT"
  151. 1510  PRINT D$;"DELETE HANT"
  152. 1520  PRINT D$;"OPEN HANT"
  153. 1530  PRINT D$;"WRITE HANT"
  154. 1540  FOR B = 1 TO 6: PRINT HT(B): NEXT B
  155. 1550  FOR V = 1 TO 6: PRINT HN$(V): NEXT V
  156. 1560  PRINT D$;"CLOSE HANT"
  157. 1570  RETURN 
  158. 1580 D$ =  CHR$(4)
  159. 1590  PRINT D$"OPEN HANT"
  160. 1600  PRINT D$"READ HANT"
  161. 1610  FOR V = 1 TO 6: INPUT HT(V): NEXT V
  162. 1620  FOR B = 1 TO 6: INPUT HN$(B): NEXT B
  163. 1630  PRINT D$;"CLOSE HANT"
  164. 1640  TEXT : HOME 
  165. 1650  VTAB 4: POKE 1403,32: PRINT "A N T - R A C E": VTAB 5: POKE 1403,30: PRINT "~~~~~~~~~~~~~~~~~~~": VTAB 6: POKE 1403,29: PRINT "H I G H   S C O R E S"
  166. 1660  FOR B = 1 TO 6
  167. 1670  VTAB 6 +2 *B: POKE 1403,30: PRINT HT(B): VTAB 6 +2 *B: POKE 1403,46: PRINT HN$(B)
  168. 1680  VTAB 6 +2 *B +1: POKE 1403,29: PRINT ":::::::::::::::::::::"
  169. 1690  NEXT B
  170. 1700  IF HS = 77  THEN  VTAB 23: POKE  -16368,0: END 
  171. 1710  VTAB 21: PRINT "* *   C O P Y R I G H T   1 9 8 4   B Y   M I C R O S P A R C ,   I N C .   * *": VTAB 23: PRINT "   < R E T U R N >   t o   e n t e r   t h e   t r a c k . . . "
  172. 1720 HS = 77
  173. 1730  GET JK$
  174. 1740  RETURN 
  175. 1750  POKE 216,0:D$ =  CHR$(4)
  176. 1760 ER =  PEEK(222): IF ER < >6  THEN  HOME : VTAB 15: PRINT "FATAL ERROR NO. ";ER: PRINT "RERUN ANT RACE": END 
  177. 1770  PRINT D$"OPEN HANT"
  178. 1780  PRINT D$"WRITE HANT"
  179. 1790  FOR V = 1 TO 6: PRINT 0: NEXT V
  180. 1800  FOR B = 1 TO 6: PRINT " ": NEXT B
  181. 1810  PRINT D$;"CLOSE HANT": GOTO 110