10 DIM B$(0)*20,D!(10),G$(3)*10,L$(4)*13 20 DIM M$(3)*12,N$(3)*12,S$(3)*20,V!(19,3),Z!(9) 100 Z!(0)=32 :Z!(1)=219:Z!(2)=237:Z!(3)=232:Z!(4)=254 105 Z!(5)=135:Z!(6)=228:Z!(7)=229:Z!(8)=230:Z!(9)=231:H$=Chr$(149) 110 M$(0)=H$+H$+H$+H$+H$+H$+H$+H$+H$+CHR$(159) 120 M$(1)=CHR$(158)+H$+H$+H$+H$+H$+H$+H$+H$+H$ 130 M$(2)=H$+H$+H$+H$+H$+CHR$(144)+H$+H$+H$+H$+H$+CHR$(159) 140 M$(3)=CHR$(158)+H$+H$+H$+H$+H$+CHR$(144)+H$+H$+H$+H$+H$ 150 N$(0)=" "+CHR$(150):N$(1)=CHR$(150)+" " 160 N$(2)=" "+CHR$(150):N$(3)=CHR$(150)+" " 170 L$(0)="Par":L$(1)="Birdie!":L$(2)="Eagle!!" 180 L$(3)="Albatross!!":L$(4)="Hole in One!!" 190 H$=CHR$(148):G$(0)=CHR$(238)+H$+H$+H$+H$+H$+H$+H$+H$+CHR$(239) 200 G$(1)=CHR$(136)+" "+CHR$(151) 210 G$(2)=G$(1):H$=CHR$(128) 220 G$(3)=CHR$(239)+H$+H$+H$+H$+H$+H$+H$+H$+CHR$(238) 230 D!(0)=55:D!(1)=50:FOR I=2 TO 10:D!(I)=(190-I*10)*0.25:NEXT I 300 RESTORE:ANGLE 0 'R2 310 CLS:LOCATE 2,1:PRINT "PB-Super Golf2" 'R2 320 IF C>=2 THEN IF C<=18 THEN 340 'R2 330 C=1:U=0:GOTO 1000 'R2 340 LOCATE 0,3:PRINT "PLAY CONTINUE?(Y/N)";:GOSUB 7200 'R2 350 H$=INKEY$:IF H$="" THEN 350 'R2 360 CLS:IF H$<>"Y" THEN IF H$<>"y" THEN 330 'R2 370 RESTORE (9500+(C-1)*2) 380 GOTO 1010 'R2 1000 GOSUB 9400 'R2 1010 B=0:G=0:S=0:GOSUB 9000:GOSUB 9100:GOSUB 9300 'R2 1100 GOSUB 7200:GOSUB 9150:GOSUB 7140:GOSUB 7200 1110 D=0:B$(0)="CLUB=W1":GOSUB 8900 1200 H$=INKEY$:IF H$="" THEN 1200 ELSE BEEP0 1210 IF H$="8" THEN D=D-1:IF D<0 THEN D=10 1220 IF H$="2" THEN D=D+1:IF D>10 THEN D=0 1230 IF H$=CHR$(23) THEN 1300 1240 LOCATE F*10+5+F,0:PRINT MID$("W1W3I3I4I5I6I7I8I9PWSW",D*2+1,2); 1250 GOTO 1200 1300 GOSUB 7200:GOSUB 6000:GOSUB 9100 1305 IF P=0 THEN S=S+1:X1=X:Y1=Y:GOTO 1500 1310 I=D!(D):PW=(I/180)*P:R=(10+D*2)*P:F=18/P 1315 IF F>=45 THEN F=45 1320 X4=X:Y4=Y:O=0:S=S+1 1330 I=0:J=0:W=0:M=0 1350 I=I+F:IF I>180 THEN I=180 1360 X1=Int(X+I*PW*COS(A+O)+J) 1370 Y1=Int(Y-I*PW*SIN(A+O)-R*SIN(I)) 1380 O=O+K:J=J+W:W=W+Q 1390 E=POINT(Abs(X1) MOD 160,Abs(Y1) MOD 32) 1410 IF M=1 THEN DRAW(X4,Y4) ELSE DRAWC(X4,Y4) 1415 X4=X1:Y4=Y1:M=E 1420 IF E=0 THEN DRAW(X1,Y1) ELSE DRAWC(X1,Y1) 1430 IF I<180 THEN GOTO 1350 1435 X3=INT(X1/8):Y3=INT(Y1/8) 1440 IF X1>=0 THEN IF X1<=159 THEN IF Y1>=0 THEN IF Y1<=31 THEN 1450 1445 GOTO 8000 1450 IF V!(X3,Y3)=3 THEN 8000 1460 IF V!(X3,Y3)=4 THEN 8100 1470 IF V!(X3,Y3)>=5 THEN 8200 1500 B=0:X=X1:Y=Y1:GOSUB 9050:GOSUB 9100 1510 FOR I=1 TO 2 1520 DRAW(X1,Y1):BEEP1:DRAWC(X1,Y1):BEEP1:NEXT I 1530 IF E=0 THEN DRAW(X1,Y1) ELSE DRAWC(X1,Y1) 1540 IF V!(X3,Y3)=2 THEN 2000 1550 GOTO 1100 2000 REM GREEN 2005 XB=INT(X-X3*8)-1:YB=INT(Y-Y3*8)-1 2006 IF XB>=0 THEN IF XB<=5 THEN IF YB>=0 THEN IF YB<=5 THEN 2010 2008 GOTO 1100 2010 G=1:B$(0)="GREEN ON":GOSUB 8900:GOSUB 9400 2020 X=INT(XB*13.3)+INT(RND*12)+1 2030 Y=INT(YB* 5.3)+INT(RND* 4)+1 2040 XB=X2:X2=XS*8+3 2050 YB=Y2:Y2=YS*8+5 2060 CLS:GOSUB 9200 2070 LOCATE 10,1:PRINT "GRAIN: ";V$; 2080 IF ABS(INT(X)-X2)<2 THEN IF ABS(INT(Y)-Y2)<2 THEN 2400 2100 LOCATE 10,2:PRINT "SHOT :";S+1; 2110 GOSUB 9050:GOSUB 7140 2120 GOSUB 6000:F=1.68887*P:P=16*P:S=S+1 2130 GOSUB 9200:X1=X:Y1=Y:I=0:J=0 2200 X=X+P*COS(A)+GX:Y=Y-P*SIN(A)+GY 2210 IF X>=0 THEN IF X<=79 THEN IF Y>=0 THEN IF Y<=31 THEN 2220 2215 GOTO 3000 2220 P=P-F:DRAWC(X1,Y1):DRAW(X,Y) 2300 X1=X:Y1=Y 2310 IF P<=5 THEN IF ABS(INT(X)-X2)<2 THEN IF ABS(INT(Y)-Y2)<2 THEN 2400 2320 IF P>0 THEN 2200 2330 GOTO 2100 2400 DRAW(X2,Y2) 2402 LOCATE 10,0:PRINT "CUP IN!"; 'R2 2404 LOCATE 10,2:PRINT "SHOT :";S;:GOSUB 9400 2408 J=S-T 2410 CLS:U=U+J:C=C+1 'R2 2412 LOCATE 1,0:PRINT C-1;"HOLE"; 'R2 2414 LOCATE 3,2:PRINT "SCORE :";:PRINT USING"###";J; 2416 LOCATE 3,3:PRINT "TOTAL SCORE:";:PRINT USING"###";U; 2418 IF J>0 THEN 2450 2420 IF S=1 THEN J=-4 2422 FOR I=1 TO 3 2424 LOCATE 3,1:PRINT " ";:BEEP0 2426 LOCATE 3,1:PRINT L$(-J);:BEEP1 2428 NEXT I 2450 GOSUB 9400:IF C<=18 THEN 1010 'R2 2500 REM GAMEOVER 2510 LOCATE 0,0:PRINT " GAME OVER " 2515 LOCATE 3,1:PRINT " " 2520 LOCATE 3,2:PRINT " " 2530 C=0:GOSUB 7200:GOSUB 7300:GOTO 300 'R2 3000 X=X+1*COS(A):Y=Y-1*SIN(A):I=INT(X/10):J=INT(Y/4) 3010 IF I<0 THEN I=0 3020 IF I>7 THEN I=7 3030 IF J<0 THEN J=0 3040 IF J>7 THEN J=7 3050 X=INT(XB/8)*8+I:Y=INT(YB/8)*8+J 3070 IF X<0 THEN X=0 3080 IF X>159 THEN X=159 3090 IF Y<0 THEN Y=0 3100 IF Y>31 THEN Y=31 3110 G=0:X2=XB:Y2=YB:GOSUB 9100:GOSUB 9050:GOSUB 9300 3120 GOTO 1100 6000 J=X3:GOSUB 7200 6010 IF G=1 THEN 6100 6020 F=0:X3=0 6030 IF X<80 THEN F=1:X3=9 6040 LOCATE X3-F,0:PRINT N$(F+2); 6050 LOCATE X3-F,1:PRINT N$(F+2); 6060 LOCATE X3-F,2:PRINT M$(F+2); 6070 LOCATE X3+10,0:PRINT CHR$(136); 6080 DRAW((X3+5)*8,16)-((X3+5)*8,19) 6090 GOTO 6200 6100 F=1:J=X3:X3=10 6110 B$(0)=" " 6120 LOCATE X3,0:PRINT B$(0); 6200 LOCATE X3,0:FOR I=0 TO 9 6210 PRINT CHR$(142);:IF INKEY$<>"" THEN 6300 6220 NEXT I 6230 FOR I=9 TO 0 STEP -1 6240 LOCATE X3+I,0:PRINT " ";:IF INKEY$<>"" THEN I=I-1:GOTO 6300 6250 NEXT I 6260 I=-1:GOTO 6350 6300 K=-2 6310 K=K+1 6320 IF INKEY$<>"" THEN 6310 6330 IF K>6 THEN K=6 6335 IF K<0 THEN K=0 6340 IF I>0 THEN LOCATE X3+I,0:PRINT CHR$(142-K); 6350 P=(I+1)*0.1:IF P>0 THEN P=P-K*0.0142 6352 IF G=1 THEN GOSUB 7200:LOCATE X3,0:PRINT B$(0);:X3=J:RETURN 6354 IF B=1 THEN P=P*(0.33-((11-D)*0.03)) 6358 GOSUB 7200:K=-1:H$=CHR$(142)+" " 6364 FOR I=9 TO 0 STEP -1 6366 LOCATE X3+I,1:PRINT H$;:IF INKEY$<>"" THEN K=I:GOTO 6400 6368 NEXT I 6370 LOCATE X3,1:PRINT "Shot Miss ";:GOSUB 9400:P=0:GOTO 6500 6400 E=-2 6410 E=E+1 6420 IF INKEY$<>"" THEN 6410 6430 IF E>6 THEN E=6 6440 IF E<0 THEN E=0 6450 IF K>0 THEN LOCATE X3+K,1:PRINT CHR$(142-E); 6460 IF K=-1 THEN K=0:P=0:RETURN 6470 K=(K-5)*1.08:IF K<>0 THEN P=P*0.9 6480 K=K-(E-2)*0.144 6490 IF P=1 THEN IF K=0 THEN LOCATE X3,1:PRINT "Fine!"; 6500 X3=J:GOSUB 7200:BEEP1:RETURN 7100 H$=INKEY$:IF H$="" THEN 7100 ELSE BEEP0 7110 IF H$="2" THEN A=A-4:IF A<0 THEN A=A+360 7112 IF H$="8" THEN A=A+4:IF A>360 THEN A=A-360 7114 IF H$="6" THEN A=A-20:IF A<0 THEN A=A+360 7116 IF H$="4" THEN A=A+20:IF A>360 THEN A=A-360 7118 IF H$=CHR$(23) THEN GOSUB 7200:RETURN 7140 X1=X+INT(16*COS(A)):Y1=Y-INT(16*SIN(A)) 7150 X3=X+INT( 4*COS(A)):Y3=Y-INT( 4*SIN(A)) 7160 I=0:IF G=1 THEN GOSUB 9200:GOTO 7170 7162 GOSUB 9100 7166 I=POINT(ABS(X1) MOD 160,ABS(Y1) MOD 32) 7170 DRAW(X3,Y3)-(X1,Y1) 7180 IF I=1 THEN DRAWC(X1,Y1) 7190 GOTO 7100 7200 IF INKEY$<>"" THEN 7200 7210 RETURN 7300 IF INKEY$="" THEN 7300 7310 RETURN 8000 REM OB 8010 B$(0)="OB":GOSUB 8900:S=S+1 8020 FOR I=0 TO 10:BEEP0:NEXT I 8030 GOSUB 9050:GOSUB 9100:GOTO 1100 8100 REM BUNKER 8110 X=X1:Y=Y1:B=1:B$(0)="BUNKER":GOSUB 8900 8120 FOR I=1 TO 5 8130 DRAW(X1,Y1):BEEP0:DRAWC(X1,Y1):BEEP0 8140 NEXT I:GOSUB 9050:GOSUB 9100:GOTO 1100 8200 REM IKE 8202 LOCATE X3,Y3:PRINT MID$(S$(Y3),X3+1,1); 8204 IF POINT(X1,Y1)=0 THEN 1500 8206 FOR I=1 TO 5 8208 DRAWC(X1,Y1):BEEP0:DRAW(X1,Y1):BEEP0 8210 NEXT I 8212 X=X1:Y=Y1:GOSUB 9050:S=S+1 8214 B$(0)=CHR$(178)+CHR$(185):GOSUB 8900:GOSUB 9400:GOSUB 9100 8216 IF POINT(X,Y)=0 THEN DRAW(X,Y) ELSE DRAWC(X,Y) 8218 FOR I=2 TO 100 STEP 2:X1=INT(X-I*COS(A)):Y1=INT(Y+I*SIN(A)) 8220 IF X1>=0 THEN IF X1<=159 THEN IF Y1>=0 THEN IF Y1<=31 THEN 8222 8221 I=900:GOTO 8224 8222 IF POINT(X1,Y1)=0 THEN I=I+100 8224 NEXT I:IF I<900 THEN 8300 8226 I=0:J=0 8228 IF X1<0 THEN X1=0:J=SGN(Y1-Y2) 8230 IF X1>159 THEN X1=159:J=SGN(Y1-Y2) 8232 IF Y1<0 THEN Y1=0:I=SGN(X1-X2) 8234 IF Y1>31 THEN Y1=31:I=SGN(X1-X2) 8250 IF POINT(X1,Y1)=0 THEN 8300 8260 X1=X1+I:Y1=Y1+J:GOTO 8250 8300 X=X1:Y=Y1:GOSUB 9050:GOSUB 9100 8310 GOTO 1100 8900 F=0:IF X<80 THEN F=1 8910 LOCATE F*10,0:PRINT N$(F); 8920 LOCATE F*10,1:PRINT M$(F); 8930 LOCATE F*10+F,0:PRINT B$(0); 8940 RETURN 9000 CLS:PRINT "Wait:Loading Course":FOR I=0 TO 3:READ B$(0) 'R2 9005 S$(I)="" 9010 FOR J=0 TO 19:V!(J,I)=VAL(MID$(B$(0),J+1,1)) 9030 S$(I)=S$(I)+Chr$(Z!(V!(J,I))) 9035 NEXT J:NEXT I:S$(3)=LEFT$(S$(3),19):READ B$(0) 9040 T=VAL(MID$(B$(0),1,1)) 9041 XS=VAL(MID$(B$(0),2,1)):YS=VAL(MID$(B$(0),3,1)) 9042 I=VAL(MID$(B$(0),4,1)):J =VAL(MID$(B$(0),5,1)) 9043 READ X:X=X*8+3:READ Y:Y=Y*8+3 9044 READ X2:X2=X2*8+4:READ Y2:Y2=Y2*8+3 9045 IF I<=1 THEN GX=I*2-1:GY=0 ELSE GX=0:GY=(I-2)*2-1 9046 GX=GX*(1+0.2*J):GY=GY*(1+0.2*J) 9047 Q=(INT(RND*3)-1)*0.056 9048 V$=MID$("<<<>>>^^^vvv",I*3+1,J) 9050 I=X2-X:J=Y-Y2 9052 IF I=0 THEN A=90*SGN(J):GOTO 9070 9054 IF J<>0 THEN 9060 9056 IF I<0 THEN A=180 ELSE A=0 9058 GOTO 9065 9060 A=ATN(J/ABS(I)):IF I<0 THEN A=180-A 9065 IF A<0 then A=A+360 9070 M=SQR((X2-X)^2+(Y-Y2)^2)*4 9080 RETURN 9100 FOR I=0 TO 3:LOCATE 0,I:PRINT S$(I);:NEXT I 9110 DRAW(X2,Y2)-(X2,Y2-5)-(X2+2,Y2-5) 9130 IF POINT(ABS(X) MOD 160,ABS(Y) MOD 32)=0 THEN DRAW(X,Y) ELSE DRAWC(X,Y) 9140 RETURN 9150 LOCATE 0,0:PRINT N$(1)+N$(0); 9155 LOCATE 0,1:PRINT M$(1)+M$(0); 9160 LOCATE 1,0:IF S<>0 THEN 9165 9162 PRINT C;"HOLE PAR";:PRINT USING"#";T; 'R2 9165 PRINT USING"####";M;"m"; 9170 IF S>0 THEN PRINT " SHOT:";S; 9175 GOSUB 9400 9180 IF G=0 THEN GOSUB 9100 ELSE GOSUB 9200 9190 RETURN 9200 FOR I=0 TO 3:LOCATE 0,I:PRINT G$(I);:NEXT I 9210 LOCATE XS,YS:PRINT CHR$(161); 9220 DRAW(X2,Y2-2)-(X2,Y2-5)-(X2+2,Y2-5) 9230 IF POINT(X,Y)=0 THEN DRAW(X,Y) ELSE DRAWC(X,Y) 9240 RETURN 9300 IF Q=0 THEN RETURN 9310 DRAW(153,27)-(158,27) 9320 IF Q<0 THEN DRAW(155,25)-(153,27)-(155,29):RETURN 9330 DRAW(156,25)-(158,27)-(156,29):RETURN 9400 IF INKEY$<>"" THEN 9400 9410 FOR I=0 TO 100 9420 IF INKEY$<>"" THEN I=500 9430 NEXT I:RETURN 9500 DATA "33333333330000000033","10333333300004000003" 9501 DATA "00000000000004000203","00000000655700000003","55201",0,1,17,2 9502 DATA "33333000000033330033","33330204065703300003" 9503 DATA "33330000085900000103","33333000000000000033","48201",17,2,5,1 9504 DATA "00005003333333333333","00005000033333333333" 9505 DATA "00105040233333333333","00005040333333333333","34101",2,2,8,2 9506 DATA "33333300550000033333","33000000550040200333" 9507 DATA "30000000890044000333","30100033330000003333","47231",2,3,14,1 9508 DATA "33330005555003333333","33300205555000000333" 9509 DATA "33000005555000440133","33000005555003333333","47132",17,2,5,1 9510 DATA "00000040855559000333","00000040008590440033" 9511 DATA "10333333300500440203","33333333330500003333","53202",0,2,17,2 9512 DATA "33300053333333000333","30204050333330010033" 9513 DATA "33000050033040000033","33300050040040003333","45133",15,1,2,1 9514 DATA "00000065555570333333","00000155900850333333" 9515 DATA "00000055040250333333","00000085700690333333","36211",5,1,11,2 9516 DATA "33330005550000000000","33300405550400100003" 9517 DATA "33304405550440000333","33320005550003333333","43113",14,1,3,3 9518 DATA "00010333333067033333","00000033330055003333" 9519 DATA "00000403340089033333","00000033333302333333","45132",3,0,13,3 9520 DATA "33333333033303333333","33304330033301333333" 9521 DATA "33204330033300333333","36557030333303333333","48221",13,1,2,2 9522 DATA "33330000333340033333","00000000000040233333" 9523 DATA "00000000100040503333","00000000000040033333","33103",8,2,14,1 9524 DATA "33330403304055550103","32330403304085590003" 9525 DATA "30330403334000000003","33333333333333300003","54102",17,0,1,1 9526 DATA "33185555555555555590","33000085555555555900" 9527 DATA "30000000000000000000","30000003304402033333","47222",2,0,13,3 9528 DATA "33330555040333333333","33330505040103333333" 9529 DATA "33330525040003333333","33330555040033333333","34213",11,1,6,2 9530 DATA "55555908555555933333","00085040559085203333" 9531 DATA "00105706550405003333","00065555557065733333","45201",2,2,14,1 9532 DATA "33330033055550033333","33302440055550000333" 9533 DATA "33304433055550000133","33330033055550000333","44232",17,2,4,1 9534 DATA "10033333330085700033","00003333300305504444" 9535 DATA "00040040003308504444","03333330033330504023","52213",0,0,18,3