home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64Games / PUTT-PUTTV1.3 (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  12.9 KB  |  446 lines

  1. 10 REM ****************************
  2. 20 REM ***                      ***
  3. 30 REM **   MINIATURE GOLF V.2   **
  4. 40 REM ***                      ***
  5. 50 REM ****************************
  6. 60 REM  IDEA CONCEIVED AND WRITTEN
  7. 70 REM  BY WVMIKE. V.2 AS MODIFIED
  8. 80 REM  AND ENHANCED BY B29GUNNER.
  9. 90 REM  MORE ENHANCEMENTS PLANNED.
  10. 100 :
  11. 110 S=54272:P1U=S+1:W1U=S+3:F1W=S+4:A1D=S+5:S1R=S+6:P2L=S+7
  12. 120 U2P=S+8:L2W=S+9:P2U=S+10:F2W=S+11:A2D=S+12:S2R=S+13
  13. 130 :
  14. 140 VOL=S+24
  15. 150 REM ^^^ STANDARD SID ASDDRESSES ^^^
  16. 160 :
  17. 170 GOSUB230:REM INSTRUCTIONS
  18. 180 GOSUB850:REM SETUP
  19. 190 GOSUB2770:REM PLAY!
  20. 200 GOTO3790:REM !END!
  21. 210 END
  22. 220 :
  23. 230 :
  24. 240 :REM *** INSTS ***
  25. 250 :
  26. 260 POKE53281,15:POKE53280,15
  27. 270 INPUT"[147][144]DO YOU NEED INSTRUCTIONS (Y/N):";YN$
  28. 280 IFYN$="N"THENPRINT"PLEASE WAIT...":RETURN
  29. 290 IFYN$<>"Y"THEN270
  30. 300 PRINT"[147][144]"TAB(8)"***  MINIATURE GOLF ***"
  31. 310 PRINT:PRINT
  32. 320 PRINT"WELCOME TO THE ALBERTS COUNTRY CLUB.    THIS BEAUTIFUL NINE-HOLE ";
  33. 330 PRINT"MINIATURE GOLF COURSE IS OPEN AND WAITING FOR YOU !"
  34. 340 PRINT
  35. 350 PRINT"YOU SHOULD KNOW THE RULES OF THE COURSE BEFORE YOU BEGIN PLAY !"
  36. 360 PRINT
  37. 370 PRINT"TO PUTT THE BALL,YOU HAVE TO INPUT      WHICH WAY YOU WANT TO ";
  38. 380 PRINT"AIM IT."
  39. 390 PRINT"THERE ARE 8 DIRECTIONS WITH THE BALL    ASSUMED AT * (SEE BELOW):
  40. 400 [153]:[153][163]17)"2 1 8":[153][163]17)"3 * 7":[153][163]17)"4 5 6"
  41. 410 [153]:[153]:[153]"PRESS RETURN WHEN READY TO CONTINUE"
  42. 420 [161]X$:[139]X$[179][177][199](13)[167]420
  43. 430 [153]"LOAD"
  44. 440 [153][163]9)"*** MINIATURE GOLF ***
  45. 450 PRINT:PRINT
  46. 460 PRINT"THEN YOU MUST INPUT HOW HARD TO HIT THE BALL.  THE SPEED SHOULD ";
  47. 470 PRINT"BE SOME NUMBER  BETWEEN 0.00 AND 5.00.  FOR EXAMPLE, YOUCOULD";
  48. 480 PRINT" HIT THE BALL A RELATIVE SPEED OF  3.2"
  49. 490 PRINT
  50. 500 PRINT"IT WILL TAKE A FEW TRIES BEFORE YOU GET USED TO HOW HARD TO PUTT ";
  51. 510 PRINT"THE BALL.":PRINT
  52. 520 PRINT"ALSO, THERE ARE FOUR TYPES OF HAZARDS ONTHE COURSE.  YOU SHOULD ";
  53. 530 PRINT"BE AWARE OF WHATTHEY ARE AND WHAT AFFECT THEY HAVE ON   YOU ";
  54. 540 PRINT"AND YOUR BALL."
  55. 550 PRINT:PRINT:PRINT:PRINT"PRESS RETURN WHEN READY TO CONTINUE"
  56. 560 GETX$:IFX$<>CHR$(13)THEN560
  57. 570 PRINT"[147]"
  58. 580 PRINTTAB(9)"*** MINIATURE GOLF ***
  59. 590 [153]:[153]
  60. 600 [153]"BLOCKS: THESE ARE LIKE WALLS. YOU MUST  PUTT AROUND THEM."
  61. 610 [153]
  62. 620 [153]"YELLOW TRAPS REPRESENT SAND.  YOUR BALL CANNOT PENETRATE THROUGH ";
  63. 630 [153]"A SAND TRAP.   THE PENALTY FOR LANDING IN THE SAND IS  ONE STROKE."
  64. 640 [153]
  65. 650 [153]"WATER: LIKE SAND, THESE BLUE HAZARDS    WILL STOP YOUR BALL.";
  66. 660 [153]"  THE   PENALTY FOR LANDING IN WATER IS ONE STROKE."
  67. 670 [153]
  68. 680 [153]"UNEVEN SURFACES: THESE RED HAZARDS CAUSETHE BALL TO ROLL IN ";
  69. 690 [153]"A DIRECTION WHICH ISUNPREDICTABLE   THERE IS NO  PENALTY ";
  70. 700 [153]"FORHITTING THIS HAZARD."
  71. 710 [153]:[153]:[153]"PRESS RETURN WHEN READY TO CONTINUE"
  72. 720 [161]X$:[139]X$[179][177][199](13)[167]720
  73. 730 [153]"LOADPRINT#"
  74. 740 [153][163]9)"*** MINIATURE GOLF ***
  75. 750 PRINT:PRINT
  76. 760 PRINT"[144]YOU ARE TRYING TO SINK THE BALL IN AS   FEW TRIES AS POSSIBLE.  ";
  77. 770 PRINT"THE HOLE IS THE BLACK SQUARE."
  78. 780 PRINT
  79. 790 PRINT"[144]IF YOU HIT THE BALL TOO HARD, IT WILL   JUMP OVER THE HOLE AND ";
  80. 800 PRINT"CONTINUE ROLLING.IT MAY ALSO CHANGE DIRECTION, SO BE SURETO HIT ";
  81. 810 PRINT"THE BALL JUST HARD ENOUGH."
  82. 820 PRINT:PRINT:PRINT"PRESS RETURN WHEN READY TO CONTINUE"
  83. 830 GETX$:IFX$<>CHR$(13)THEN830
  84. 840 RETURN
  85. 850 :
  86. 860 :REM *** SETUP ***
  87. 870 :
  88. 880 REM  STORE FANFARE NOTES
  89. 890 DIM YY(12),ZZ(12)
  90. 900 FORI=1TO12:READYY(I),ZZ(I):NEXTI
  91. 910 DATA 25,30,18,209,33,135,25,30,42,62,31,165,50,60,37,162,42,62,31,165
  92. 920 DATA 50,60,37,162
  93. 930 DIMHA(9,5):FORI=1TO9:FORJ=1TO5:READHA(I,J):NEXT:NEXT
  94. 940 DATA 0,0,0,0,2
  95. 950 DATA 1,0,0,0,3
  96. 960 DATA 0,1,0,0,3
  97. 970 DATA 1,1,0,0,3
  98. 980 DATA 0,0,0,1,3
  99. 990 DATA 0,0,1,1,3
  100. 1000 DATA 1,0,1,0,3
  101. 1010 DATA 0,1,1,0,4
  102. 1020 DATA 0,0,1,1,3
  103. 1030 DIMDI(8,2):FORI=1TO8:READDI(I,1),DI(I,2):NEXT
  104. 1040 DATA 0,-1,-1,-1,-1,0,-1,1,0,1,1,1,1,0,1,-1
  105. 1050 PLT=49152:FORI=0TO24:READC:POKEPLT+I,C:NEXTI
  106. 1060 DATA 32,16,192,132
  107. 1070 DATA 253,32,16,192
  108. 1080 DATA 152,170,164,253
  109. 1090 DATA 24,76,240,255
  110. 1100 DATA 32,253,174,32
  111. 1110 DATA 158,173,76,170,177
  112. 1120 DIMV(8):FORI=1TO8:READV(I):NEXT:DATA-40,-41,-1,39,40,41,1,-39
  113. 1130 DEF FNSC(X)=PEEK(1024+BX+40*BY+X)
  114. 1140 DEF FNCO(X)=PEEK(55296+BX+40*BY+X)AND15
  115. 1150 RETURN
  116. 1160 REM *** HOLE 1 ***
  117. 1170 PRINT"":TS=0
  118. 1180 PRINTTAB(10)"[144][172][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][187]"
  119. 1190 FORI=1TO15
  120. 1200 PRINTTAB(10)"[161]                 [146][144][161]"
  121. 1210 NEXT
  122. 1220 PRINTTAB(10)"[144][188][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][146][190]"
  123. 1230 PRINT""TAB(19)" "
  124. 1240 BY=16:BX=11+INT(17*RND(0)):SYSPLT,BX,BY:PRINT"[209]";
  125. 1250 RETURN
  126. 1260 REM *** HOLE 2 ***
  127. 1270 PRINT"":TS=0
  128. 1280 PRINTTAB(8)"[144][172][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][187]"
  129. 1290 FORI=1TO5
  130. 1300 PRINTTAB(8)"[161]                          [146][144][161]"
  131. 1310 NEXT
  132. 1320 PRINTTAB(8)"[161]                [144][172][162][162][162][162][162][162][162][162][162][146][190]"
  133. 1330 PRINTTAB(8)"[161]                [146][144][161]"
  134. 1340 PRINTTAB(8)"[161]                [146][144][161]"
  135. 1350 PRINTTAB(8)"[161]                [146][144][161]"
  136. 1360 PRINTTAB(8)"[161]                [146][144][161]"
  137. 1370 FORI=1TO6
  138. 1380 PRINTTAB(8)"[161]                [146][144][161]"
  139. 1390 NEXT
  140. 1400 PRINTTAB(8)"[188][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][146][190]"
  141. 1410 BY=17:BX=9+INT(15*RND(0)):SYSPLT,BX,BY:PRINT"[209]";
  142. 1420 PRINT""TAB(30)"[144] "
  143. 1430 RETURN
  144. 1440 REM *** HOLE 3 ***
  145. 1450 PRINT"":TS=0
  146. 1460 PRINTTAB(20)"[144][172][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][187]"
  147. 1470 FORI=1TO5
  148. 1480 PRINTTAB(20)"[161]                [146][144][161]"
  149. 1490 NEXT
  150. 1500 PRINTTAB(8)"[146][172][162][162][162][162][162][162][162][162][162][162][162][190]                [146][144][161]"
  151. 1510 PRINTTAB(8)"[161]                            [146][144][161]"
  152. 1520 PRINTTAB(8)"[161]                     [158]       [146][144][161]"
  153. 1530 PRINTTAB(8)"[161]                    [158]        [146][144][161]"
  154. 1540 PRINTTAB(8)"[161]                    [158]        [146][144][161]"
  155. 1550 PRINTTAB(8)"[161]                     [158]       [146][144][161]"
  156. 1560 PRINTTAB(8)"[161]                [144][172][162][162][162][162][162][162][162][162][162][162][162][146][190]"
  157. 1570 FORI=1TO4
  158. 1580 PRINTTAB(8)"[161]                [146][144][161]"
  159. 1590 NEXT
  160. 1600 PRINTTAB(8)"[146][188][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][146][190]"
  161. 1610 PRINT""TAB(32)"[144] "
  162. 1620 BY=17:BX=9+INT(15*RND(0)):SYSPLT,BX,BY:PRINT"[209]"
  163. 1630 RETURN
  164. 1640 REM *** HOLE 4 ***
  165. 1650 PRINT"":TS=0
  166. 1660 PRINTTAB(7)"[144][172][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][187]"
  167. 1670 FORI=1TO6
  168. 1680 PRINTTAB(7)"[161]                             [146][144][161]"
  169. 1690 NEXT
  170. 1700 PRINTTAB(7)"[161]       [144][172][162][162][162][162][162][162][162][162][162][187][146]           [146][144][161]"
  171. 1710 FORI=1TO4
  172. 1720 PRINTTAB(7)"[161]       [144][146][161]         [161]           [146][144][161]"
  173. 1730 NEXT
  174. 1740 PRINTTAB(7)"[161]       [144][188][146][162][162][162][187]     [188][162][162][162][162][162][162][162][162][162][162][162][146][190]"
  175. 1750 FORI=1TO3
  176. 1760 PRINTTAB(7)"[161]           [144][146][161]"
  177. 1770 NEXT
  178. 1780 PRINTTAB(7)"[188][162][162][162][162][162][162][162][162][162][162][162][146][190]"
  179. 1790 PRINT""TAB(18)"[158]        [157][157][157][157][157][157]      [157][157][157][157]"
  180. 1800 PRINTTAB(25)"[157][157][157]    [157][157][157][157][157]       [157][157]  "
  181. 1810 SYSPLT,32,11:PRINT"[144] "
  182. 1820 BY=16:BX=8+INT(10*RND(0)):SYSPLT,BX,BY:PRINT"[209]"
  183. 1830 RETURN
  184. 1840 REM *** HOLE 5 ***
  185. 1850 PRINT""
  186. 1860 PRINT"":TS=0
  187. 1870 PRINTTAB(10)"[144][172][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][187]"
  188. 1880 FORI=1TO15
  189. 1890 PRINTTAB(10)"[161]                        [146][144][161]"
  190. 1900 NEXT
  191. 1910 PRINTTAB(10)"[144][188][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][146][190]"
  192. 1920 SYSPLT,19,6:PRINT"[173][195][195][195][195][195][189]"
  193. 1930 SYSPLT,22,4:PRINT"[144] "
  194. 1940 BY=16:BX=11+INT(23*RND(0)):SYSPLT,BX,BY:PRINT"[209]"
  195. 1950 RETURN
  196. 1960 REM *** HOLE 6 ***
  197. 1970 PRINT"":TS=0
  198. 1980 PRINTTAB(8)"[144][172][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][187]"
  199. 1990 FORI=1TO7
  200. 2000 PRINTTAB(8)"[161]                         [146][144][161]"
  201. 2010 NEXT
  202. 2020 PRINTTAB(8)"[161]               [144][172][162][162][162][162][162][162][162][162][162][146][190]"
  203. 2030 FORI=1TO7
  204. 2040 PRINTTAB(8)"[161]               [146][144][161]"
  205. 2050 NEXT
  206. 2060 PRINTTAB(8)"[188][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][146][190]"
  207. 2070 SYSPLT,27,4:PRINT"[176][157][194][157][173]"
  208. 2080 SYSPLT,20,5:PRINT"    [157][157][157][157][157][157]       [157][157][157][157][157]    [157][157]  "
  209. 2090 SYSPLT,30,5:PRINT"[144] "
  210. 2100 BY=16:BX=9+INT(15*RND(0)):SYSPLT,BX,BY:PRINT"[209]"
  211. 2110 RETURN
  212. 2120 REM *** HOLE 7 ***
  213. 2130 PRINT"":TS=0
  214. 2140 PRINTTAB(8)"[144][172][162][162][162][162][162][162][162][162][162][162][162][162][187]"
  215. 2150 FORI=1TO4
  216. 2160 PRINTTAB(8)"[161]            [146][144][161]"
  217. 2170 NEXT
  218. 2180 PRINTTAB(8)"[161]            [144][188][146][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][187]"
  219. 2190 FORI=1TO4
  220. 2200 PRINTTAB(8)"[161]                             [144][146][161]"
  221. 2210 NEXT
  222. 2220 PRINTTAB(8)"[144][188][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][187]             [144][146][161]"
  223. 2230 FORI=1TO5
  224. 2240 PRINTTAB(24)"[144][161]             [144][146][161]"
  225. 2250 NEXT
  226. 2260 PRINTTAB(24)"[144][188][162][162][162][162][162][162][162][162][162][162][162][162][162][146][190]"
  227. 2270 SYSPLT,9,7:PRINT"    [157][157][157][157]     [157][157][157][157]      [157][157][157][157][157]        "
  228. 2280 SYSPLT,27,8:PRINT"         [157][157][157][157][157][157]       [157][157][157][157][157][157]      [157][157][157][157][157][157][157]       "
  229. 2290 SYSPLT,13,4:PRINT"[144] "
  230. 2300 BY=16:BX=25+INT(13*RND(0)):SYSPLT,BX,BY:PRINT"[209]"
  231. 2310 RETURN
  232. 2320 REM *** HOLE 8 ***
  233. 2330 PRINT"":TS=0
  234. 2340 PRINTTAB(7)"[144][172][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][187]"
  235. 2350 FORI=1TO6
  236. 2360 PRINTTAB(7)"[161]                             [146][144][161]"
  237. 2370 NEXT
  238. 2380 PRINTTAB(7)"[161]          [144][172][162][162][162][162][162][162][162][187]          [146][144][161]"
  239. 2390 FORI=1TO4
  240. 2400 PRINTTAB(7)"[161]          [144][146][161]       [161]          [146][144][161]"
  241. 2410 NEXT
  242. 2420 PRINTTAB(7)"[188][162][162][162][162][162][162][162][162][162][162][146][190]       [161]          [144][146][161]"
  243. 2430 FORI=1TO3
  244. 2440 PRINTTAB(26)"[161]          [144][146][161]"
  245. 2450 NEXT
  246. 2460 PRINTTAB(26)"[188][162][162][162][162][162][162][162][162][162][162][146][190]"
  247. 2470 SYSPLT,28,3:PRINT"         "
  248. 2480 SYSPLT,29,4:PRINT"        "
  249. 2490 SYSPLT,30,5:PRINT"       "
  250. 2500 SYSPLT,30,6:PRINT"       "
  251. 2510 SYSPLT,32,7:PRINT"     "
  252. 2520 SYSPLT,33,8:PRINT"   "
  253. 2530 SYSPLT,13,3:PRINT"[158]   [157][157][157][157]     [157][157][157][157][157]     [157][157][157][157]   "
  254. 2540 SYSPLT,13,10:PRINT"[144] "
  255. 2550 BY=16:BX=27+INT(10*RND(0)):SYSPLT,BX,BY:PRINT"[209]"
  256. 2560 RETURN
  257. 2570 REM *** HOLE 9 ***
  258. 2580 PRINT"":TS=0
  259. 2590 PRINTTAB(8)"[144][172][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][187]"
  260. 2600 FORI=1TO9
  261. 2610 PRINTTAB(8)"[161]                           [146][144][161]"
  262. 2620 NEXT
  263. 2630 PRINTTAB(8)"[188][162][162][162][162][162][162][162][162][162][162][162][187]               [146][144][161]"
  264. 2640 FORI=1TO5
  265. 2650 PRINTTAB(20)"[161]               [146][144][161]"
  266. 2660 NEXT
  267. 2670 PRINTTAB(20)"[188][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][146][190]"
  268. 2680 SYSPLT,21,3:PRINT"               "
  269. 2690 SYSPLT,22,4:PRINT"              "
  270. 2700 SYSPLT,23,5:PRINT"             "
  271. 2710 SYSPLT,24,6:PRINT"            "
  272. 2720 SYSPLT,25,7:PRINT"           "
  273. 2730 SYSPLT,11,6:PRINT"[144] "
  274. 2740 SYSPLT,14,5:PRINT"[174][157][194][157][189]"
  275. 2750 BY=16:BX=21+INT(15*RND(0)):SYSPLT,BX,BY:PRINT"[209]"
  276. 2760 RETURN
  277. 2770 :
  278. 2780 :REM *** PLAY ***
  279. 2790 :
  280. 2800 FORHO=1TO9:BC$=""
  281. 2810 GOSUB4030:PRINT"[147]";
  282. 2820 ONHOGOSUB1160,1260,1440,1640,1840,1960,2120,2320,2570
  283. 2830 POKE646,9:PRINT"HOLE NUMBER:";STR$(HO);"  PAR:";STR$(HA(HO,5));
  284. 2835 PRINT" SCORE";STR$(SC)
  285. 2840 PRINT"STROKES:";TS;" OVER/UNDER:";OU;"[146]":POKE646,0
  286. 2850 PRINT:PRINT"TRAPS:":IFHA(HO,1)THENPRINT"WATER"
  287. 2860 IFHA(HO,2)THENPRINT"[158]SAND"
  288. 2870 IFHA(HO,3)THENPRINT"UNEVEN"
  289. 2880 IFHA(HO,4)THENPRINT"[144]BLOCKS"
  290. 2890 PRINT:PRINT"[144]2 1 8":PRINT"3 [209] 7":PRINT"4 5 6"
  291. 2900 SYSPLOT,0,20:FORI=1TO3:PRINT"                                       ":NEXT
  292. 2910 D$="":SYSPLT,0,20:INPUT"DIRECTION (1-8)";D$:DIR=VAL(D$)
  293. 2920 IFDIR>0ANDDIR<9ANDDIR=INT(DIR)THEN2940
  294. 2930 PRINT"THE DIRECTION IS FROM 1 TO 8 ...[145][145]":FORPA=1TO1500:NEXT:GOTO2900
  295. 2940 SYSPLT,0,20:FORI=1TO3:PRINT"                                     ":NEXT
  296. 2950 D$="":SYSPLT,0,20:INPUT"SPEED (0-5)";D$:SP=VAL(D$)
  297. 2960 IFSP>0ANDSP<9THENN1=51:N2=75:GOSUB4200:GOTO2980
  298. 2970 PRINT"THE SPEED IS FROM 0 TO 5...[145][145]":FORPA=1TO1500:NEXT:GOTO2940
  299. 2980 UF=0:REM CLEAR UNEVEN FLAG
  300. 2990 TF=0:BT=0:REM CLEAR TRAP FLAGS
  301. 3000 REM  BALL MOVES TILL SP=0 OR HAZARD ENCOUNTERED
  302. 3010 X2=BX+DI(DI,1):Y2=BY+DI(DI,2)
  303. 3020 D2=V(DI):CO=FNCO(D2):IFCO<>5ORFNSC(D2)<>160THEN3060
  304. 3030 SYSPLT,BX,BY:PRINTBC$" ";:BX=X2:BY=Y2:SYSPLT,BX,BY:PRINT"[209]";
  305. 3040 BT=0:BC$="":GOTO3720
  306. 3050 REM  DETERMINE BALL LIE
  307. 3060 IFCO=0ANDFNSC(D2)<>160THEN3140:REM HIT A WALL OR BUMPER
  308. 3070 IFCO=6ANDBT=1THENBT=0:GOTO3380:REM  WAS IN THE WATER
  309. 3080 IFCO=6THENBT=1:GOTO3380:REM  JUST LANDED IN WATER
  310. 3090 IFCO=7ANDBT=1THENBT=0:GOTO3440:REM  WAS IN THE SAND
  311. 3100 IFCO=7THENBT=1:GOTO3440:REM  JUST LANDED IN SAND
  312. 3110 IFCO=2THEN3500:REM UNEVEN SURFACE
  313. 3120 IFCO=0THEN3590:REM HIT THE HOLE
  314. 3130 REM HIT WALL OR BUMPER (FROM 3120)
  315. 3140 IFDI=1ORDI=3THENDI=DI+4:GOTO3010:REM  REBOUND DIR 1 OR 3 TO DIR 5 OR 7
  316. 3150 IFDI=5ORDI=7THENDI=DI-4:GOTO3010:REM  REBOUND DIR 5 OR 7 TO DIR 1 OR 3
  317. 3160 ONDI/2GOTO3180,3230,3280,3330
  318. 3170 REM  REBOUND DIR 2 TO DIR 6
  319. 3180 IFFNSC(D2+1)<>160ANDFNSC(D2+40)<>160THENDI=6:GOTO3010
  320. 3190 IFFNSC(D2+1)<>160THENDI=4:GOTO3010
  321. 3200 IFFNSC(D2+40)<>160THENDI=8:GOTO3010
  322. 3210 DI=6:GOTO3010
  323. 3220 REM  REBOUND DIR 4 TO DIR 6
  324. 3230 IFFNSC(D2+1)<>160ANDFNSC(D2-40)<>160THENDI=8:GOTO3010
  325. 3240 IFFNSC(D2+1)<>160THENDI=2:GOTO3010
  326. 3250 IFFNSC(D2-40)<>160THENDI=6:GOTO3010
  327. 3260 DI=8:GOTO3010
  328. 3270 REM  REBOUND DIR 6 TO DIR 2
  329. 3280 IFFNSC(D2-1)<>160ANDFNSC(D2-40)<>160THENDI=2:GOTO3010
  330. 3290 IFFNSC(D2-1)<>160THENDI=8:GOTO3010
  331. 3300 IFFNSC(D2-40)<>160THENDI=4:GOTO3010
  332. 3310 DI=2:GOTO3010
  333. 3320 REM  REBOUND DIR 8 TO DIR 4
  334. 3330 IFFNSC(D2-1)<>160ANDFNSC(D2+40)<>160THENDI=4:GOTO3010
  335. 3340 IFFNSC(D2-1)<>160THENDI=6:GOTO3010
  336. 3350 IFFNSC(D2+40)<>160THENDI=2:GOTO3010
  337. 3360 DI=4:GOTO3010
  338. 3370 REM  WATER TRAP (FROM 3121)
  339. 3380 IFTF>0THEN3400
  340. 3390 TF=3:REM SET TRAP FLAG
  341. 3400 SYSPLT,BX,BY:PRINTBC$" ";
  342. 3410 BX=X2:BY=Y2:SYSPLT,BX,BY:PRINT"[209]";:BC$=""
  343. 3420 GOTO3720
  344. 3430 REM  SAND TRAP (FROM 3122)
  345. 3440 IFTF>0THEN3460
  346. 3450 TF=3:REM SET TRAP FLAG
  347. 3460 SYSPLT,BX,BY:PRINTBC$" ";
  348. 3470 BX=X2:BY=Y2:SYSPLT,BX,BY:PRINT"[158][209]";:BC$="[158]"
  349. 3480 GOTO3720
  350. 3490 REM  UNEVEN SURFACE (FROM 3123)
  351. 3500 IFUFTHEN3550
  352. 3510 UF=1:REM  SET UNEVEN FLAG REROLL BALL OFF COURSE
  353. 3520 DI=DI+2*INT(2*RND(0))-1
  354. 3530 IFDI=0THENDI=2
  355. 3540 IFDI=9THENDI=7
  356. 3550 SYSPLT,BX,BY:PRINTBC$" ";
  357. 3560 BX=X2:BY=Y2:SYSPLT,BX,BY:PRINT"[209]";:BC$=""
  358. 3570 GOTO3720
  359. 3580 REM  DETERMINE IF BALL IN HOLE
  360. 3590 SYSPLT,BX,BY:PRINT" ":SYSPLT,X2,Y2:PRINT" "
  361. 3600 SYSPLT,X2,Y2:PRINT"[144] ";
  362. 3610 DI=DI+2*INT(2*RND(0))-1
  363. 3620 IFDI=0THENDI=8
  364. 3630 IFDI=9THENDI=1
  365. 3640 SP=SP-.5:IFSP>0THENX2=X2+DI(DI,1):Y2=Y2+DI(DI,2):GOTO3020
  366. 3650 N1=7:N2=50:GOSUB4200:REM CUP SOUND
  367. 3660 SC=SC+1:TS=TS+1:REM BUMP SCORE
  368. 3670 TP=TP+HA(HO,5):OU=SC-TP:REM  DETERMINE OVER/UNDER PAR
  369. 3680 POKE646,9:PRINT"HOLE NUMBER:";HO;"  PAR:";HA(HO,5);" SCORE:";SC
  370. 3690 PRINT"STROKES:";TS;" OVER/UNDER:";OU;"[146]":POKE646,0
  371. 3700 IFSC=1THENGOSUB4290
  372. 3710 GOTO3780
  373. 3720 REM DECREMENT PENALTY OR NEXT HOLE
  374. 3730 IFTF>0THENTF=TF-1:IFTF=0THEN3750
  375. 3740 SP=SP-.3:IFSP>0THEN3010
  376. 3750 SC=SC+1:TS=TS+1
  377. 3760 IFBT=1THENGOSUB4060:REM  PENALTY
  378. 3770 GOTO2830
  379. 3780 GOSUB4030:NEXTHO
  380. 3790 :
  381. 3800 :REM *** END ***
  382. 3810 :
  383. 3820 FORPA=1TO200:NEXTPA:POKE646,7
  384. 3830 PRINT"[147]";TAB(9)"*** MINIATURE GOLF ***"
  385. 3850 PRINT"THE GAME IS OVER !"
  386. 3860 PRINT
  387. 3870 PRINT"ON THE PAR 27 COURSE, YOU SHOT":PRINT"A ROUND OF"SC"[157].";
  388. 3880 PRINT" THAT MAKES YOUR"
  389. 3890 PRINT"AVERAGE"INT(SC*100/9)/100"SHOTS PER HOLE.":PRINT
  390. 3900 IFSC<=27THENPRINT"[156]GREAT GAME! YOU SHOULD TURN PRO.[144]":GOTO3960
  391. 3910 IFSC>27ANDSC<=36THENPRINT"VERY, VERY NICE TRY![144]":GOTO3960
  392. 3920 PRINT:IFSC>36ANDSC<=45THENPRINT"[158]NOT TOO BAD - FOR A DUFFER![144]":GOTO3960
  393. 3930 IFSC>45ANDSC<=50THENPRINT"YOU NEED LOTS AND LOTS OF PRACTICE![144]":GOTO3960
  394. 3940 IFSC>50ANDSC<=56THENPRINT"DON'T TRY TO MAKE A LIVING OFF GOLF!":GOTO3960
  395. 3950 PRINT"[144]FORGET IT AND GO PLAY MONOPOLY!!"
  396. 3960 INPUT"[144]PLAY AGAIN (Y/N):";YN$
  397. 3970 IFYN$=""THEN3960
  398. 3980 IFYN$="N"THENEND
  399. 3990 IFYN$<>"Y"THEN3960
  400. 4000 RUN
  401. 4010 REM  -----------------------------
  402. 4020 REM  HOLD SCREEN DELAY
  403. 4030 FORX=1TO1250:NEXT:RETURN
  404. 4040 REM  -----------------------------
  405. 4050 REM  FLASH PENALTY SIGNAL
  406. 4060 FORPF=1TO3
  407. 4070 FORCLEAR=STOVOL:POKECLEAR,0:NEXT
  408. 4080 POKEVOL,15
  409. 4090 POKEA1D,80:POKES1R,243:POKEW1U,4
  410. 4100 FORKS=1TO3
  411. 4110 PRINT""SPC(20)"[146]PENALTY":FORX=1TO300:NEXT
  412. 4120 POKEF1W,65
  413. 4130 FORI=20TO140STEP5:POKEP1U,I:NEXT
  414. 4140 POKEF1W,64:FORI=1TO50:NEXT
  415. 4150 PRINT""SPC(20)"        ":FORX=1TO300:NEXT
  416. 4160 NEXTKS
  417. 4170 SC=SC+1:TS=TS+1:BT=0:RETURN
  418. 4180 REM  -----------------------------
  419. 4190 REM  GOLF SOUNDS ROUTINE
  420. 4200 FORCLEAR=STOVOL:POKECLEAR,0:NEXT
  421. 4210 POKEVOL,15
  422. 4220 POKEW1U,8:POKEA1D,0:POKES1R,240
  423. 4230 POKES,N1:POKEP1U,N2
  424. 4240 POKEF1W,65
  425. 4250 POKEF1W,64:POKEVOL,0
  426. 4260 RETURN
  427. 4270 REM  -----------------------------
  428. 4280 REM  FANFARE SALUTE
  429. 4290 FORCLEAR=STOVOL:POKECLEAR,0:NEXT
  430. 4300 FORFF=1TO4
  431. 4310 POKEA1D,85:POKES1R,85:POKEA2D,85:POKES2R,85
  432. 4320 POKEVOL,15:POKEF1W,33:POKEF2W,17
  433. 4330 FORI=1TO11STEP2:POKEP1U,YY(I):POKES,ZZ(I)
  434. 4340 POKEU2P,YY(I+1):POKEP2L,ZZ(I+1)
  435. 4350 IFYY(I)=50THENFORPA=1TO200:NEXT
  436. 4360 FORPA=1TO100:NEXT
  437. 4370 NEXT
  438. 4380 POKEF1W,32:POKEF2W,16:FORPA=1TO500:NEXT
  439. 4390 GOSUB4430:REM  FLASH MESSAGE
  440. 4400 NEXTFF
  441. 4410 H1=0:PRINT"[144]":RETURN
  442. 4420 REM  HOLE IN ONE FLASH
  443. 4430 PRINT"[146]"SPC(20)"[158]A HOLE IN ONE!!":FORX=1TO300:NEXT
  444. 4440 PRINT""SPC(20)"               ":FORX=1TO300:NEXT
  445. 4450 POKEVOL,0:RETURN
  446.