home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib22b.dsk / GOLF.bas < prev    next >
BASIC Source File  |  2023-02-26  |  14KB  |  360 lines

  1. 10  REM  *******12.4.84**********
  2. 20  REM  *                      *
  3. 30  REM  *        GOLF          *
  4. 40  REM  *     BY GARY KNOX     *
  5. 50  REM  *  COPYRIGHT (C) 1984  *
  6. 60  REM  *  BY MICROSPARC, INC  *
  7. 70  REM  *  CONCORD, MA. 01742  *
  8. 80  REM  *                      *
  9. 90  REM  ************************
  10. 100  IF  PEEK(104) = 64  THEN 210
  11. 110  TEXT : HOME : VTAB 5: HTAB 12: PRINT "NIBBLE GOLF PRO": HTAB 14: PRINT "BY GARY KNOX"
  12. 120  VTAB 20: PRINT "** COPYRIGHT 1984 BY MICROSPARC, INC. **": HTAB 8: PRINT "PRESS ANY KEY TO START": HTAB 19: GET K$: PRINT 
  13. 130 :
  14. 140  REM ****LOAD ROUTINES****
  15. 150 :
  16. 160  TEXT : HOME 
  17. 170  VTAB 10
  18. 180  PRINT "ONE MOMENT......"
  19. 190  POKE 103,1: POKE 104,64: POKE 16384,0
  20. 200  PRINT  CHR$(4);"RUN GOLF"
  21. 210  IF  PEEK(2791) = 15  AND  PEEK(2793) = 32  THEN 250
  22. 220  REM  LOAD SHAPES AND SCRN ROUTINE
  23. 230  PRINT  CHR$(4);"BLOAD SCRN"
  24. 240  PRINT  CHR$(4);"BLOAD GOLF.SHAPES"
  25. 250 D$ =  CHR$(4):R$ =  CHR$(13): TEXT : HOME : POKE 232,231: POKE 233,10:LL$ = "":TP =  RND( -1)
  26. 260 :
  27. 270  REM **** MENU ****
  28. 280 :
  29. 290  DIM CL$(20),HT%(20),V%(5),WE%(5),IR%(5),TD%(5)
  30. 300  DIM PH%(5),PT%(5),PX(5),PY(5),P%(5),P$(5),KQ%(5),N$(5)
  31. 310  HOME :TP = 0: RESTORE 
  32. 320  VTAB 5: PRINT "ENTER CHOICE 1, 2, 3, OR 4 "
  33. 330  VTAB 10: HTAB 3: PRINT "(1) PLAY ON A NEW COURSE.": PRINT : HTAB 3: PRINT "(2) PLAY ANOTHER ROUND ON SAME COURSE."
  34. 340  HTAB 3: PRINT "(3) CREATE A NEW COURSE.": PRINT : HTAB 3: PRINT "(4) END THE PROGRAM."
  35. 350  VTAB 5: HTAB 28: GET A$: PRINT :A =  VAL(A$): IF A <1  OR A >4  THEN 350
  36. 360  ON A GOTO 420,710,370,380
  37. 370  PRINT D$;"RUN CREATE"
  38. 380  TEXT : HOME : END 
  39. 390 :
  40. 400  REM ****CHOOSE COURSE****
  41. 410 :
  42. 420  ONERR  GOTO 3540
  43. 430  HOME : VTAB 10: PRINT "GETTING COURSE LIST...":N$ = "":LL$ = "Y"
  44. 440  PRINT D$;"OPEN COURSE.LIST"
  45. 450  PRINT D$;"READ COURSE.LIST"
  46. 460  INPUT NUM: IF NUM < >0  THEN 490
  47. 470  PRINT D$;"CLOSE COURSE.LIST"
  48. 480  HOME : VTAB 22: INVERSE : PRINT "NO COURSES ARE ON THIS DISK.": NORMAL :LL$ = "": GOTO 320
  49. 490  FOR K = 1 TO NUM: INPUT N$(K),KQ%(K): NEXT K
  50. 500  PRINT D$;"CLOSE COURSE.LIST"
  51. 510  HOME 
  52. 520 U =  INT(NUM/5):L = NUM -U *5: INVERSE : HTAB 10: PRINT "LIST OF COURSES": NORMAL : PRINT : PRINT 
  53. 530  IF U = 0  THEN U = 1: GOTO 630
  54. 540  FOR K = 1 TO U: FOR N = 1 TO 5
  55. 550  HTAB 5: PRINT "("N")  " RIGHT$(N$(5 *U +N -5), LEN(N$(5 *U +N -5)) -1): PRINT 
  56. 560  NEXT N
  57. 570  GOSUB 3100
  58. 580  IF A = 0  THEN 610
  59. 590  IF A >0  AND A <6  THEN 710
  60. 600  PRINT : GOTO 570
  61. 610  NEXT K
  62. 620  IF  ASC(A$) = 13  AND L = 0  THEN  VTAB 1: GOTO 520
  63. 630  IF L = 0  THEN 710
  64. 640  FOR K = 1 TO L: HTAB 5: PRINT "("K")  " RIGHT$(N$(5 *U +K -5), LEN(N$(5 *U +K -5)) -1): PRINT 
  65. 650  NEXT K
  66. 660  GOSUB 3100
  67. 670  IF A < = 0  OR A >L  THEN  PRINT : GOTO 660
  68. 680 :
  69. 690  REM ****ENTER PLAYER NAMES****
  70. 700 :
  71. 710  FOR I = 1 TO 5:P$(I) = "": NEXT I:PN = 1: IF LL$ = ""  THEN 310
  72. 720 V%(PN) = PN
  73. 730  HOME : VTAB 3: PRINT "ENTER PLAYER'S NAME IN SPACE PROVIDED."
  74. 740 LL$ = "Y"
  75. 750  VTAB 5: PRINT "PRESS <-- (LEFT ARROW) FOR CORRECTIONS."
  76. 760  VTAB 20: HTAB 10: PRINT "PRESS ";: INVERSE : PRINT " RETURN ";: NORMAL : PRINT " WHEN DONE."
  77. 770  VTAB 7: HTAB 8: PRINT "NO MORE THAN 5 PLAYERS."
  78. 780  VTAB 12: HTAB 14: INVERSE : PRINT "<";: HTAB 25: PRINT ">": NORMAL 
  79. 790 U2 = 14: VTAB 12: HTAB 15
  80. 800  GET A$
  81. 810  IF  ASC(A$) = 21  THEN A$ = " ": GOTO 870
  82. 820  IF  ASC(A$) = 13  THEN 890
  83. 830  IF  ASC(A$) < >8  THEN 870
  84. 840  IF  POS(0) = 14  THEN 800
  85. 850  IF U2 = 15  THEN P$(PN) = "": CALL  -1008: PRINT " ";: CALL  -1008: GOTO 790
  86. 860 P$(PN) =  LEFT$(P$(PN),U2 -15): CALL  -1008: PRINT " ";:U2 = U2 -1: CALL  -1008: GOTO 800
  87. 870  IF U2 <24  THEN U2 = U2 +1:P$(PN) = P$(PN) +A$: HTAB U2: PRINT A$;: GOTO 800
  88. 880  GET A$: GOTO 810
  89. 890  IF PN = 5  THEN 920
  90. 900  HOME : VTAB 10: PRINT "MORE PLAYERS? Y/N? ";: GET A$: IF A$ = "Y"  THEN PN = PN +1: GOTO 720
  91. 910  IF A$ < >"N"  THEN 900
  92. 920  FOR K = 1 TO PN:PT%(K) = 0: NEXT K
  93. 930  FOR K = 1 TO 20: READ CL$(K),HT%(K): NEXT K
  94. 940  IF N$ < >""  THEN 1000
  95. 950 N$ = N$(5 *U -5 +A)
  96. 960 KQ = KQ%(5 *U -5 +A)
  97. 970 :
  98. 980  REM ****BEGIN PLAY****
  99. 990 :
  100. 1000 GP = 0: FOR H = 1 TO KQ
  101. 1010 PD = 0:WD =  INT(4 * RND(1)):WV =  INT(15 * RND(1)) +1:WV =  INT(.13 *WV *WV -.46 *WV +1.2)
  102. 1020  FOR K = 1 TO PN:PH%(K) = 0: NEXT K
  103. 1030  IF WD = 0  THEN WY =  -WV:WX = 0
  104. 1040  IF WD = 1  THEN WY = 0:WX = WV
  105. 1050  IF WD = 2  THEN WY = WV:WX = 0
  106. 1060  IF WD = 3  THEN WY = 0:WX =  -WV
  107. 1070 :
  108. 1080  REM ****HOLE DATA****
  109. 1090 :
  110. 1100  HOME : VTAB 10: PRINT "ONE MOMENT PLEASE..."
  111. 1110  PRINT D$;"OPEN"N$"."H
  112. 1120  PRINT D$;"READ"N$"."H
  113. 1130  INPUT C,PAR:TP = TP +C
  114. 1140  INPUT XT,YT,XG,YG
  115. 1150  PRINT D$;"CLOSE"N$"."H
  116. 1160  HGR :GP = GP +PAR:XG = XG -12:YG = YG +2
  117. 1170  HOME : VTAB 21: HTAB 5: INVERSE : PRINT "HOLE "H;: HTAB 15: PRINT "PAR "PAR;: HTAB 25: PRINT "DISTANCE="C: NORMAL : VTAB 1
  118. 1180  PRINT D$;"BLOAD"N$".HOLE"H
  119. 1190  IF WV = 0  THEN 1230
  120. 1200  ROT= 16 *WD: HCOLOR= 3: SCALE= 1: DRAW 2 AT 270,90
  121. 1210  VTAB 22: FLASH : HTAB 5: PRINT "WIND VELOCITY =";: NORMAL : PRINT " "WV" MPH"
  122. 1220  PRINT "WIND DIRECTION SHOWN RIGHT OF COURSE": GOSUB 3060: VTAB 22: HTAB 1: CALL  -958
  123. 1230  FOR KK = 1 TO PN:PX(KK) = XT:PY(KK) = YT:WE%(KK) = 0:IR%(KK) = 0: NEXT KK
  124. 1240  HCOLOR= 3
  125. 1250 FI = 0
  126. 1260 :
  127. 1270  REM ****PLAYER'S TURNS****
  128. 1280 :
  129. 1290  FOR PL = 1 TO PN
  130. 1300 XP = PX(V%(PL)):YP = PY(V%(PL))
  131. 1310  IF PD = 0  THEN 1340
  132. 1320  FOR KK = 1 TO PD: IF V%(PL) = TD%(KK)  THEN 2810
  133. 1330  NEXT KK
  134. 1340  IF FI = 1  THEN  ROT= 0: FOR KK = 1 TO 8: HCOLOR= 0: SCALE= KK: DRAW 1 AT XT,YT: NEXT KK
  135. 1350  IF FI = 1  THEN  SCALE= 2: ROT= 0: HCOLOR= 3: XDRAW 2 AT PX(V%(PL)),PY(V%(PL)):R = 0
  136. 1360 :
  137. 1370  REM ****CHOOSE CLUBS****
  138. 1380 :
  139. 1390 PH%(V%(PL)) = PH%(V%(PL)) +1:PT%(V%(PL)) = PT%(V%(PL)) +1
  140. 1400  VTAB 22: PRINT P$(V%(PL));: HTAB 11: PRINT "THIS CLUB...Y OR N?"
  141. 1410 BN = 1:RN = 5: GOSUB 3110:TC = CC
  142. 1420  VTAB 24: HTAB 1: CALL  -868
  143. 1430  IF TC = 1  THEN BN = 6:RN = 9
  144. 1440  IF TC = 2  THEN BN = 10:RN = 17
  145. 1450  IF TC > = 3  THEN BN = 18:RN = 20
  146. 1460  VTAB 22: HTAB 11: CALL  -868: PRINT "THIS "CL$(TC)" ?  Y OR N?"
  147. 1470 TC$ = CL$(TC)
  148. 1480  GOSUB 3110
  149. 1490  IF TC = 1  THEN CN = CC -5:EF = 0
  150. 1500  IF TC = 2  THEN CN = CC -8:EF = 0
  151. 1510  IF TC = 3  THEN CN = CC -5:EF = 1
  152. 1520  IF TC = 4  THEN CN = CC +1:EF = 1
  153. 1530  IF TC = 5  THEN CN = CC -2:EF = 1
  154. 1540 :
  155. 1550  REM ****ROTATE TEE****
  156. 1560 :
  157. 1570  IF FI = 0  THEN  ROT= 0: FOR KK = 1 TO 8: HCOLOR= 0: SCALE= KK: DRAW 1 AT XT,YT: NEXT KK
  158. 1580  IF FI = 0  THEN  SCALE= 2: ROT= 0: HCOLOR= 3: XDRAW 2 AT PX(V%(PL)),PY(V%(PL)):R = 0
  159. 1590  VTAB 22: HTAB 11: CALL  -868: PRINT "CHOOSE DIRECTION FOR HIT"
  160. 1600 FI = 1
  161. 1610  VTAB 24: CALL  -868: PRINT "R=CLOCKWISE E=CNTRCLOCKWISE F=FINISHED";: VTAB 1
  162. 1620  GET A$: IF A$ = "F"  THEN 1720
  163. 1630  IF A$ = "R"  THEN R = R +4: GOTO 1660
  164. 1640  IF A$ = "E"  THEN R = R -4: GOTO 1660
  165. 1650  GOTO 1620
  166. 1660  IF R <0  THEN R = 60
  167. 1670  IF R >64  THEN R = 4
  168. 1675  IF R = 64  THEN R = 0
  169. 1680  XDRAW 2 AT PX(V%(PL)),PY(V%(PL)): HCOLOR= 3: ROT= R: XDRAW 2 AT PX(V%(PL)),PY(V%(PL)): GOTO 1620
  170. 1690 :
  171. 1700  REM ****HIT THE BALL****
  172. 1710 :
  173. 1720  VTAB 22: HTAB 11: CALL  -958: PRINT "PRESS H TO HIT THE BALL";
  174. 1730 SOUND =  PEEK( -16336): IF  PEEK( -16384) < >200  THEN 1730
  175. 1740  FOR ZZ = 1 TO 10:SOUND =  PEEK( -16336): NEXT ZZ
  176. 1750  GET A$: PRINT 
  177. 1760  ROT= R: SCALE= 2: XDRAW 2 AT PX(V%(PL)),PY(V%(PL)): HCOLOR= 3
  178. 1770 I =  INT(R/16):R = R -I *16
  179. 1780 ZZ =  FRE(0)
  180. 1790  RESTORE : FOR KK = 1 TO 20: READ AA$,AA: NEXT KK:DI = 0
  181. 1800 :
  182. 1810  REM ****CALCULATE DISTANCE HIT****
  183. 1820 :
  184. 1830 NM =  INT(11 * RND(1)) +2:NQ =  INT(11 * RND(1)) +2
  185. 1840  FOR KK = 1 TO CN: READ A1: NEXT KK
  186. 1850  IF CN = 21  THEN 1870
  187. 1860  FOR KK = CN +1 TO 21: READ AA: NEXT KK
  188. 1870  IF EF = 0  THEN 1900
  189. 1880  FOR KK = 1 TO CN -12: READ B1,B2: NEXT KK
  190. 1890 D = B1 *NM *NM +B2 *NM +A1:DX = 0: GOTO 1970
  191. 1900 D =  -.5 *NM *NM +14.6 *NM +A1
  192. 1910  FOR KK = 1 TO 9: READ AA,AA: NEXT KK
  193. 1920  IF CN <5  THEN ZZ = CN: GOTO 1950
  194. 1930  IF CN <9  THEN ZZ = 4: GOTO 1950
  195. 1940 ZZ = 5
  196. 1950  FOR KK = 1 TO ZZ: READ B1,B2: NEXT KK
  197. 1960 DX = B1 *NQ +B2
  198. 1970 YC = D * COS(R *3.14159/32):XC = D * SIN(R *3.14159/32)
  199. 1980  IF IR%(V%(PL)) = 1  THEN D = D -D/(2 *TC):IR%(V%(PL)) = 0
  200. 1990  IF WE%(V%(PL)) = 1  AND TC$ < >"WEDGE"  THEN D = 5:WE%(V%(PL)) = 0
  201. 2000  IF WE%(V%(PL)) = 1  THEN WE%(V%(PL)) = 0
  202. 2010  IF TC$ = "PUTTER"  OR TC$ = "WEDGE"  OR TC$ = "CHIP SHOT"  THEN 2040
  203. 2020  IF I = 0  OR I = 2  THEN XC = XC +WX:YC = YC +WY
  204. 2030  IF I = 1  OR I = 3  THEN XC = XC +WY:YC = YC +WX
  205. 2040 D =  SQR(XC *XC +YC *YC)
  206. 2050 A =  ATN(DX/D)
  207. 2060  IF YC = 0  THEN AN = 0: GOTO 2080
  208. 2070 AN =  ATN(XC/YC)
  209. 2080 AN = AN +A:XC =  SIN(AN):YC =  COS(AN)
  210. 2090  IF I = 0  THEN YC =  -YC:XC = XC
  211. 2100  IF I = 1  THEN T = XC:XC = YC:YC = T
  212. 2110  IF I = 2  THEN XC =  -XC:YC = YC
  213. 2120  IF I = 3  THEN T = XC:XC =  -YC:YC =  -T
  214. 2130 D2 = D
  215. 2140  VTAB 23: CALL  -958: PRINT "DISTANCE HIT = 0": HTAB 11: VTAB 22: CALL  -868: HTAB 25: PRINT "STROKES = "PH%(V%(PL))
  216. 2150  ROT= 0: HCOLOR= 3: SCALE= 1: XDRAW 1 AT PX(V%(PL)),PY(V%(PL)):DI =  SQR((PX(V%(PL)) -XP) ^2 +(PY(V%(PL)) -YP) ^2) *2.2
  217. 2160  VTAB 23: HTAB 15: CALL  -868: PRINT  INT(DI)
  218. 2170 :
  219. 2180  REM ****MADE THE SHOT? ****
  220. 2190 :
  221. 2200  XDRAW 1 AT PX(V%(PL)),PY(V%(PL))
  222. 2210  IF DI > = D2  THEN 2580
  223. 2220 PX(V%(PL)) = PX(V%(PL)) +2 *XC:PY(V%(PL)) = PY(V%(PL)) +2 *YC
  224. 2230  IF  ABS(PX(V%(PL)) -XG) >3  THEN 2310
  225. 2240  IF  ABS(PY(V%(PL)) -YG) >4  THEN 2310
  226. 2250  IF DI <.9 *D2  AND TC$ < >"PUTTER"  THEN 2310
  227. 2260  FOR K = 1 TO 200:SOUND =  PEEK( -16336): NEXT K
  228. 2270  VTAB 23: HTAB 1: CALL  -958: VTAB 22: HTAB 25: PRINT "STROKES = "PH%(V%(PL))
  229. 2280  HTAB 10: PRINT "YOU SUNK IT!!"
  230. 2290 PD = PD +1:TD%(PD) = V%(PL)
  231. 2300  GOSUB 3060: GOTO 2790
  232. 2310 PX = PX(V%(PL)): GOSUB 3230
  233. 2320 :
  234. 2330  REM ****OUT OF BOUNDS? ****
  235. 2340 :
  236. 2350  IF PX(V%(PL)) < = 2  THEN PX(V%(PL)) = 10: GOTO 2400
  237. 2360  IF PX(V%(PL)) > = 258  THEN PX(V%(PL)) = 249: GOTO 2400
  238. 2370  IF PY(V%(PL)) < = 2  THEN PY(V%(PL)) = 10: GOTO 2400
  239. 2380  IF PY(V%(PL)) > = 148  THEN PY(V%(PL)) = 139: GOTO 2400
  240. 2390  GOTO 2480
  241. 2400 D2 = DI:PH%(V%(PL)) = PH%(V%(PL)) +1:PT%(V%(PL)) = PT%(V%(PL)) +1
  242. 2410  GOSUB 3310
  243. 2420  GOSUB 3300
  244. 2430  VTAB 23: CALL  -958: PRINT "OUT OF BOUNDS...PENALTY STROKE!": VTAB 22: HTAB 25: PRINT "STROKES = "PH%(V%(PL))
  245. 2440  FOR ZZ = 1 TO 2000: NEXT ZZ: GOTO 2790
  246. 2450 :
  247. 2460  REM ****CHECK SCRN COLORS****
  248. 2470 :
  249. 2480  IF HB < >1  THEN 2150
  250. 2490  IF DI <30  OR D2 -DI <40  THEN 2510
  251. 2500  GOTO 2150
  252. 2510 D2 = DI
  253. 2520  GOSUB 3300
  254. 2530  VTAB 23: CALL  -958: PRINT "YOU HIT A TREE!!"
  255. 2540  FOR ZZ = 1 TO 1000: NEXT ZZ
  256. 2550 XC =  -XC:YC =  -YC
  257. 2560  GOSUB 3310
  258. 2570  IF HB < >0  THEN 2560
  259. 2580  VTAB 23: HTAB 1: CALL  -958: PRINT "YOU HIT THE BALL " INT(D2)" YARDS!": FOR QP = 1 TO 1000: NEXT QP
  260. 2590 PX =  INT(PX(V%(PL))): GOSUB 3230
  261. 2600  IF HB < >7  THEN 2650
  262. 2610  GOSUB 3300
  263. 2620  VTAB 23: CALL  -958: PRINT "IN SAND TRAP!!...USE A WEDGE.":WE%(V%(PL)) = 1
  264. 2630  FOR ZZ = 1 TO 1000: NEXT ZZ
  265. 2640  GOTO 2790
  266. 2650  IF HB < >5  THEN 2700
  267. 2660  GOSUB 3300
  268. 2670  VTAB 23: CALL  -958: PRINT "IN THE ROUGH!!...USE NO WOOD.":IR%(V%(PL)) = 1
  269. 2680  FOR ZZ = 1 TO 1000: NEXT ZZ
  270. 2690  GOTO 2790
  271. 2700  IF HB < >2  THEN 2790
  272. 2710 PH%(V%(PL)) = PH%(V%(PL)) +1:PT%(V%(PL)) = PT%(V%(PL)) +1
  273. 2720  GOSUB 3300
  274. 2730  VTAB 23: CALL  -958: PRINT "IN THE WATER!!....1-STROKE PENALTY."
  275. 2740  VTAB 22: HTAB 25: PRINT "STROKES = "PH%(V%(PL))
  276. 2750 XC =  -XC:YC =  -YC
  277. 2760  GOSUB 3310
  278. 2770  IF HB = 0  THEN 2790
  279. 2780  GOTO 2760
  280. 2790  HTAB 1: VTAB 22: CALL  -958
  281. 2800  IF PD = PN  THEN 2860
  282. 2810  NEXT PL
  283. 2820  GOTO 1290
  284. 2830 :
  285. 2840  REM ****PRINT SCORECARD****
  286. 2850 :
  287. 2860  HOME : TEXT : INVERSE 
  288. 2870  FOR KK = 1 TO 39: HTAB KK: VTAB 1: PRINT " ": VTAB 23: HTAB KK: PRINT " ": VTAB 8: HTAB KK: PRINT " ": NEXT KK
  289. 2880  FOR KK = 1 TO 23: HTAB 1: VTAB KK: PRINT " ": HTAB 39: VTAB KK: PRINT " ": NEXT KK
  290. 2890  VTAB 3: HTAB 10: PRINT "SCORECARD FOR HOLE "H: NORMAL : PRINT : PRINT 
  291. 2900  HTAB 12: PRINT C" YDS.     PAR= "PAR
  292. 2910  VTAB 9: HTAB 4: PRINT "NAME";: HTAB 17: PRINT "HOLE";: HTAB 27: PRINT "COURSE"
  293. 2920  VTAB 11
  294. 2930  FOR PL = 1 TO PN
  295. 2940  HTAB 4: PRINT P$(TD%(PL));: HTAB 18: PRINT PH%(TD%(PL));: HTAB 29: PRINT PT%(TD%(PL))
  296. 2950 V%(PL) = TD%(PL)
  297. 2960  NEXT PL
  298. 2970  HTAB 7: VTAB 21: INVERSE : PRINT "PAR FOR COURSE SO FAR = ";: PRINT GP: NORMAL 
  299. 2980  GOSUB 3060
  300. 2990  NEXT H
  301. 3000  GOTO 310
  302. 3010  END 
  303. 3020 :
  304. 3030 :
  305. 3040  REM ****KEYPRESS ROUTINE****
  306. 3050 :
  307. 3060  VTAB 24: HTAB 5: PRINT "PRESS THE ";: INVERSE : PRINT "RETURN";: NORMAL : PRINT " KEY TO GO ON...";: GET A$: CALL  -958: RETURN 
  308. 3070 :
  309. 3080  REM ****SELECTION ROUTINES****
  310. 3090 :
  311. 3100  VTAB 21: PRINT "ENTER NUMBER OF YOUR CHOICE...": PRINT : HTAB 5: PRINT "OR PRESS ";: INVERSE : PRINT "RETURN";: NORMAL : PRINT " TO GO ON.";: GET A$:A =  VAL(A$): RETURN 
  312. 3110  VTAB 24: FOR RK = BN TO RN: HTAB HT%(RK): PRINT CL$(RK);: NEXT RK
  313. 3120 CC = BN
  314. 3130  VTAB 24: HTAB HT%(CC): FLASH : PRINT CL$(CC);: NORMAL 
  315. 3140  GET A$: IF A$ = "Y"  THEN 3190
  316. 3150  IF A$ < >"N"  THEN 3140
  317. 3160  VTAB 24: HTAB HT%(CC): PRINT CL$(CC);:CC = CC +1
  318. 3170  IF CC >RN  THEN 3120
  319. 3180  GOTO 3130
  320. 3190  RETURN 
  321. 3200 :
  322. 3210  REM ****SCREEN COLOR ROUTINE****
  323. 3220 :
  324. 3230  POKE 2308, INT((PX +1)/256): POKE 2309,PX +1 - INT((PX +1)/256) *256
  325. 3240  POKE 2310, INT(PY(V%(PL))): CALL 2316
  326. 3250 HB =  PEEK(2314)
  327. 3260  RETURN 
  328. 3270 :
  329. 3280  REM ****SOUND****
  330. 3290 :
  331. 3300  FOR ZZ = 1 TO 10:SOUND =  PEEK( -16336): NEXT ZZ: RETURN 
  332. 3310 :
  333. 3320  REM ****MOVEBACK****
  334. 3330 :
  335. 3340 PX(V%(PL)) = PX(V%(PL)) +XC:PY(V%(PL)) = PY(V%(PL)) +YC
  336. 3350 PX = PX(V%(PL)): GOSUB 3230
  337. 3360  RETURN 
  338. 3370 :
  339. 3380  REM ****CLUB DATA****
  340. 3390 :
  341. 3400  DATA "WOOD",1,"IRON",7,"WEDGE",13,"PUTTER",20,"CHIP SHOT",28
  342. 3410  DATA 1,10,2,13,3,16,4,19
  343. 3420  DATA 2,5,3,8,4,11,5,14,6,17,7,20,8,23,9,26
  344. 3430  DATA "FULL",5,"MEDIUM",14,"LIGHT",25
  345. 3440 :
  346. 3450  REM ****DISTANCE DATA****
  347. 3460 :
  348. 3470  DATA 163,142,122,112,102,92,82,72,62,52,42,32
  349. 3480  DATA 22,1.4,26,70,50,15,-7.7,-3.6,-3
  350. 3490  DATA -.5,14.6,-.5,14.6,-.2,4.8,.8,-10.8,.8,-10.8,.2,-2.4,-.9,12.2,-.3,4.8,-.1,2
  351. 3500  DATA 10,-70,7.4,-51.5,7.4,-51.5,6.4,-44.5
  352. 3510  DATA  6,-42,4,-28
  353. 3520 :
  354. 3530  REM ****ERROR ROUTINE****
  355. 3540  IF  PEEK(222) < >5  THEN  PRINT "ERROR #" PEEK(222)" IN LINE:"; PEEK(218) + PEEK(219) *256: PRINT "PRESS ANY KEY TO START AGAIN.": GET K$: RUN 
  356. 3550  PRINT D$;"CLOSE": PRINT D$;"DELETE COURSE.LIST"
  357. 3560  PRINT D$;"OPEN COURSE.LIST"
  358. 3570  PRINT D$;"WRITE COURSE.LIST": PRINT 0
  359. 3580  PRINT D$;"CLOSE"
  360. 3590 LL$ = "": GOTO 480