Spectrum Golf

This file is part of Miscellaneous Programs . Download the collection to get this file.
Date: 1982
Type: Program
Platform(s): TS 2068
Tags: Game

Golf simulation.

Content

Related Products

Related Articles

Related Content

Image Gallery

Source Code

    0 REM Spectrum "GOLF" 
    0 REM   © R & R SOFTWARE 1982. 
   10 GO TO 140
   20 BORDER 4: PAPER 4: CLS : PAPER 7: FOR I=1 TO 44: PRINT "\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a";: ON ERR GO TO 20: NEXT I
   30 FOR I=1 TO PI+RND*PI: LET K=4+RND*17: FOR L=0 TO 20: LET K=K-2+RND*4: PRINT AT L,K*(K<=31);"\b\b\b\b\b\b\b\b\b"( TO 4+RND*8): NEXT L: NEXT I
   40 FOR I=1 TO 29 STEP 2: LET J=5+RND*5: FOR L=J TO 11+RND*4: PRINT AT L,I;"  ": NEXT L: NEXT I
   50 LET I=5+10*RND: LET J=10+10*RND: FOR L=I TO I+2+RND*2: LET J=J-2+RND*4: PRINT AT L,J;"\c\c\c\c\c\c"( TO 6+RND*3): NEXT L
   60 FOR I=1 TO 2+RND*2: LET J=5+RND*10: LET K=21+RND*6: FOR L=J TO J+1+RND*2: LET K=K-1+RND*2: PRINT AT L,K;"     "( TO 3+RND*2): NEXT L: NEXT I
   70 LET J=INT (4+RND*14): FOR I=J-2 TO J+2: PRINT AT I,25+RND*2;"     ": NEXT I
   80 PRINT AT J,27+RND*PI;"\d "
   90 LET BX=5+RND*8: LET BY=0
  100 ON ERR GO TO 1130
  110 LET J=RND: LET PAR=3+(J>.5)+(J>=.8): LET YRD=(170+INT (RND*100))*(PAR=3)+(275+INT (RND*175))*(PAR=4)+(450+INT (RND*125))*(PAR=5): LET STEP=28/YRD
  120 PRINT AT 1,1;"Hole  ";H;TAB 10;AT 2,1;"Par   ";PAR;TAB 10;AT PI,1;"Yards ";YRD
  130 RETURN 
  140 ON ERR GO TO 1130
  150 BORDER 6: PAPER 6: BRIGHT NOT PI: OVER NOT PI: FLASH NOT PI: INK NOT PI: CLS : RANDOMIZE : POKE 23658,8: RESTORE 
  160 FOR I=65 TO 69: FOR J=0 TO 7: READ X: POKE USR CHR$ I+J,X: NEXT J: NEXT I
  170 LET B$=CHR$ 22+CHR$ 21+CHR$ 0: LET B$=B$+"                                "+B$
  180 PRINT '''''''''"   Do you need instructions?"''TAB 10;"""Y"" OR ""N"""
  190 IF INKEY$="Y" THEN GO SUB 1020: GO TO 210
  200 IF INKEY$<>"N" THEN GO TO 190
  210 CLS : PRINT '''''''"What length of course would you";TAB 10;"like to play?"''TAB 7;"""S""  Short 9 hole."''TAB 7;"""L""  Long 18 hole."
  220 LET CL=9*(INKEY$="S")+18*(INKEY$="L"): IF NOT CL THEN GO TO 220
  230 CLS : PRINT '''''"WELCOME TO THE TS INTERNATIONAL"''TAB 5;CL;" HOLE GOLF COURSE."'''TAB 7;"How many players?";''TAB 10;"""1"" OR ""2"""
  240 LET PL=1*(INKEY$="1")+2*(INKEY$="2"): IF NOT PL THEN GO TO 240
  250 DIM P(PL,6): LET V=PI/6
  260 FOR H=1 TO CL: GO SUB 20
  270 FOR I=1 TO PL: LET P(I,1)=BX: LET P(I,2)=BY: LET P(I,PI)=1: LET P(I,6)=0: NEXT I
  280 LET HO=0: FOR S=1 TO 99: FOR P=1 TO PL
  290 IF P(P,PI)=97 THEN GO TO 580
  300 GO SUB 840: LET ST=ST*STEP*2: LET P$=" "
  310 IF P(P,PI)=32 THEN LET ST=ST/(2+RND*2): LET P$="\a"
  320 IF P(P,PI)=4 THEN LET P$="\b": IF RND>.6 THEN PRINT B$;"YOUR BALL REBOUNDS FROM A TREE.": LET D=RND*12: LET ST=ST/4: PAUSE 150
  330 IF P(P,PI)=48 THEN LET P$=" ": IF RND>.6 THEN PRINT B$;"MISS HIT! You remain in bunker.": LET ST=0: PAUSE 150
  340 IF P(P,PI)=36 THEN LET P$=" "
  350 IF P(P,PI)=100 THEN LET P$=" "
  360 IF P(P,PI)=1 THEN LET P$="T"
  370 PRINT AT P(P,1),P(P,2);P$
  380 LET P(P,1)=P(P,1)-ST*COS (D*V): LET P(P,2)=P(P,2)+ST*SIN (D*V)
  390 IF P(P,1)>=0 AND P(P,1)<=20 AND P(P,2)>=0 AND P(P,2)<=31 THEN GO TO 450
  400 PRINT B$;"OUT OF BOUNDS... PENALTY STROKE": PAUSE 150: LET P(P,6)=P(P,6)+1
  410 IF P(P,1)<0 THEN LET P(P,1)=0
  420 IF P(P,1)>20 THEN LET P(P,1)=20
  430 IF P(P,2)<0 THEN LET P(P,2)=0
  440 IF P(P,2)>31 THEN LET P(P,2)=31
  450 LET P(P,PI)=ATTR (P(P,1),P(P,2))
  460 IF P(P,PI)=39 THEN LET P(P,PI)=P(1+(P=1),PI)
  470 IF P(P,PI)=41 THEN GO TO 930
  480 IF P(P,PI)=97 THEN GO TO 560
  490 PRINT B$;
  500 IF P(P,PI)=36 THEN PRINT "ON THE FAIRWAY"
  510 IF P(P,PI)=32 THEN PRINT "IN THE ROUGH"
  520 IF P(P,PI)=4 THEN PRINT "IN THE TREES..."
  530 IF P(P,PI)=48 THEN PRINT "IN A BUNKER."
  540 IF P(P,PI)=100 THEN PRINT "ON THE GREEN."
  550 PRINT AT P(P,1),P(P,2);"\e": PAUSE 150: PRINT AT P(P,1),P(P,2);"\e": GO TO 580
  560 LET P(P,5)=S+P(P,6)-PAR: LET P(P,4)=P(P,4)+P(P,5): LET HO=HO+1
  570 PRINT B$;"Player ";P;" Holed out in ";S+P(P,6): IF S+P(P,6)=1 THEN FOR I=1 TO 30: BEEP .08,10+RND*20: NEXT I: PRINT B$;"YOU BUY THE DRINKS AT THE 19th."
  580 PAUSE VAL "200": NEXT P
  590 IF HO=PL THEN GO TO 610
  600 NEXT S: REM RESET  R&R SOFTWARE
  610 BORDER 4: PAPER 5: CLS : PRINT " SCORE    TS 2000 GOLF     CARD "
  620 PRINT 'TAB 9+1*(CL=9);CL;" HOLE COURSE"
  630 PRINT '"Hole - ";H;"  Par - ";PAR;"  Yards - ";YRD
  640 PRINT '"PLAYER";TAB 10;"HOLE";TAB 20;"COURSE": PRINT "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀"
  650 FOR I=1 TO PL: PRINT '"   ";I;TAB 7;
  660 IF NOT P(I,5) THEN PRINT "  On";: GO TO 700
  670 PRINT ABS P(I,5);
  680 IF P(I,5)<0 THEN PRINT " Under";
  690 IF P(I,5)>0 THEN PRINT " Over";
  700 PRINT " Par";TAB 19;
  710 IF NOT P(I,4) THEN PRINT " On";: GO TO 750
  720 PRINT ABS P(I,4);
  730 IF P(I,4)<0 THEN PRINT " Under";
  740 IF P(I,4)>0 THEN PRINT " Over";
  750 PRINT " Par": NEXT I
  760 IF H=CL THEN GO TO 800
  770 PRINT B$;" PRESS ENTER TO START NEXT HOLE "
  780 IF INKEY$<>CHR$ 13 THEN GO TO 780
  790 NEXT H: REM RESET  R&R SOFTWARE
  800 PRINT AT 16,2;"Would you like another game?";AT 18,11;"""Y"" OR ""N"""
  810 IF INKEY$="Y" THEN RUN 140
  820 IF INKEY$="N" THEN PRINT AT 20,7;"Thanks for playing": STOP 
  830 GO TO 810
  840 PRINT B$;"  Player ";P;" Press ENTER to play"
  850 PRINT AT P(P,1),P(P,2);"\e"
  860 IF INKEY$<>CHR$ 13 THEN GO TO 860
  870 PRINT AT P(P,1),P(P,2);"\e"
  880 PRINT B$;"Direction? 0-12": INPUT D: IF D<0 OR D>12 THEN PRINT B$;"INVALID Direction MUST be 0-12": PAUSE 150: GO TO 880
  890 LET D=INT (D*100+.5)/100
  900 PRINT B$;"Direction= ";D;" Strength? 0-100": INPUT ST: IF NOT ST THEN GO TO 880
  910 IF ST<0 OR ST>100 THEN PRINT B$;"INVALID Strength MUST be 0-100": PAUSE 150: GO TO 900
  920 LET ST=INT (ST*100+.5)/100: PRINT B$;"Direction= ";D;" Strength= ";ST: PAUSE 100: RETURN 
  930 PRINT B$;"LANDED IN WATER. Penalty Stroke"
  940 FOR I=INT (P(P,2)) TO 0 STEP -1
  950 IF ATTR (P(P,1),I)=41 THEN NEXT I
  960 LET P(P,2)=I: LET P(P,6)=P(P,6)+1: PAUSE 150: GO TO 450
  970 DATA 0,0,4,0,0,64,0,0
  980 DATA 255,247,227,213,247,227,213,247
  990 DATA 0,96,144,9,102,144,9,6
 1000 DATA 12,60,12,4,4,30,37,30
 1010 DATA 0,28,62,62,62,28,0,0
 1020 BORDER 7: PAPER 7: CLS : LET T$="      TS 2000  PRO-AM GOLF      ": PRINT T$''"   A GAME FOR 1 OR 2 PLAYERS"
 1030 PRINT '" You may play a 9 hole course ORa full 18 hole course. Each holeis generated at RANDOM so no twogames are the same."
 1040 PRINT '" When its your turn to play yourball will be set flashing. When ready for move,Press the ENTER  key. You must now enter a value (0-12, As on a Clock) to select your DIRECTION. Now give a valuefor STRENGTH of shot (1-100), anentry of ZERO will return you tothe direction input.    Decimal inputs ie. 3.25 are allowed."
 1050 PRINT B$;"Hit ENTER for more instructions."
 1060 IF INKEY$<>CHR$ 13 THEN GO TO 1060
 1070 CLS : PRINT T$''"The GREEN =      FAIRWAY =        ROUGH = \a\a\a  BUNKER =    ","WATER HAZZARD = \c\c\c  TREES = \b","  The HOLE = \d   The BALL = \e"
 1080 PRINT '"When playing from the ROUGH yourball will not move as far as it will on the FAIRWAY. If you landin a bunker you may not get out first shot.   When in the TREES the ball MAY bounce off in any  direction.  Land in the WATER orgo OUT OF BOUNDS and you incur  ONE penalty stroke."
 1090 PRINT '"   I hope you enjoy your game  "''"Press ENTER to start round OR   ""P"" to see instructions again."
 1100 IF INKEY$="P" THEN GO TO 1020
 1110 IF INKEY$<>CHR$ 13 THEN GO TO 1100
 1120 RETURN 
 1130 ON ERR RESET 
 1140 PAUSE 100
 1150 ON ERR GO TO 1130
 1160 ON ERR CONTINUE 
 1170 SAVE "golf" LINE 140: GO TO 1170
    0 REM Spectrum "GOLF" 
    0 REM   © R & R SOFTWARE 1982. 
   10 GO TO 140
   20 BORDER 4: PAPER 4: CLS : PAPER 7: FOR I=1 TO 44: PRINT "\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a\a";: ON ERR GO TO 20: NEXT I
   30 FOR I=1 TO PI+RND*PI: LET K=4+RND*17: FOR L=0 TO 20: LET K=K-2+RND*4: PRINT AT L,K*(K<=31);"\b\b\b\b\b\b\b\b\b"( TO 4+RND*8): NEXT L: NEXT I
   40 FOR I=1 TO 29 STEP 2: LET J=5+RND*5: FOR L=J TO 11+RND*4: PRINT AT L,I;"  ": NEXT L: NEXT I
   50 LET I=5+10*RND: LET J=10+10*RND: FOR L=I TO I+2+RND*2: LET J=J-2+RND*4: PRINT AT L,J;"\c\c\c\c\c\c"( TO 6+RND*3): NEXT L
   60 FOR I=1 TO 2+RND*2: LET J=5+RND*10: LET K=21+RND*6: FOR L=J TO J+1+RND*2: LET K=K-1+RND*2: PRINT AT L,K;"     "( TO 3+RND*2): NEXT L: NEXT I
   70 LET J=INT (4+RND*14): FOR I=J-2 TO J+2: PRINT AT I,25+RND*2;"     ": NEXT I
   80 PRINT AT J,27+RND*PI;"\d "
   90 LET BX=5+RND*8: LET BY=0
  100 ON ERR GO TO 1130
  110 LET J=RND: LET PAR=3+(J>.5)+(J>=.8): LET YRD=(170+INT (RND*100))*(PAR=3)+(275+INT (RND*175))*(PAR=4)+(450+INT (RND*125))*(PAR=5): LET STEP=28/YRD
  120 PRINT AT 1,1;"Hole  ";H;TAB 10;AT 2,1;"Par   ";PAR;TAB 10;AT PI,1;"Yards ";YRD
  130 RETURN 
  140 ON ERR GO TO 1130
  150 BORDER 6: PAPER 6: BRIGHT NOT PI: OVER NOT PI: FLASH NOT PI: INK NOT PI: CLS : RANDOMIZE : POKE 23658,8: RESTORE 
  160 FOR I=65 TO 69: FOR J=0 TO 7: READ X: POKE USR CHR$ I+J,X: NEXT J: NEXT I
  170 LET B$=CHR$ 22+CHR$ 21+CHR$ 0: LET B$=B$+"                                "+B$
  180 PRINT '''''''''"   Do you need instructions?"''TAB 10;"""Y"" OR ""N"""
  190 IF INKEY$="Y" THEN GO SUB 1020: GO TO 210
  200 IF INKEY$<>"N" THEN GO TO 190
  210 CLS : PRINT '''''''"What length of course would you";TAB 10;"like to play?"''TAB 7;"""S""  Short 9 hole."''TAB 7;"""L""  Long 18 hole."
  220 LET CL=9*(INKEY$="S")+18*(INKEY$="L"): IF NOT CL THEN GO TO 220
  230 CLS : PRINT '''''"WELCOME TO THE TS INTERNATIONAL"''TAB 5;CL;" HOLE GOLF COURSE."'''TAB 7;"How many players?";''TAB 10;"""1"" OR ""2"""
  240 LET PL=1*(INKEY$="1")+2*(INKEY$="2"): IF NOT PL THEN GO TO 240
  250 DIM P(PL,6): LET V=PI/6
  260 FOR H=1 TO CL: GO SUB 20
  270 FOR I=1 TO PL: LET P(I,1)=BX: LET P(I,2)=BY: LET P(I,PI)=1: LET P(I,6)=0: NEXT I
  280 LET HO=0: FOR S=1 TO 99: FOR P=1 TO PL
  290 IF P(P,PI)=97 THEN GO TO 580
  300 GO SUB 840: LET ST=ST*STEP*2: LET P$=" "
  310 IF P(P,PI)=32 THEN LET ST=ST/(2+RND*2): LET P$="\a"
  320 IF P(P,PI)=4 THEN LET P$="\b": IF RND>.6 THEN PRINT B$;"YOUR BALL REBOUNDS FROM A TREE.": LET D=RND*12: LET ST=ST/4: PAUSE 150
  330 IF P(P,PI)=48 THEN LET P$=" ": IF RND>.6 THEN PRINT B$;"MISS HIT! You remain in bunker.": LET ST=0: PAUSE 150
  340 IF P(P,PI)=36 THEN LET P$=" "
  350 IF P(P,PI)=100 THEN LET P$=" "
  360 IF P(P,PI)=1 THEN LET P$="T"
  370 PRINT AT P(P,1),P(P,2);P$
  380 LET P(P,1)=P(P,1)-ST*COS (D*V): LET P(P,2)=P(P,2)+ST*SIN (D*V)
  390 IF P(P,1)>=0 AND P(P,1)<=20 AND P(P,2)>=0 AND P(P,2)<=31 THEN GO TO 450
  400 PRINT B$;"OUT OF BOUNDS... PENALTY STROKE": PAUSE 150: LET P(P,6)=P(P,6)+1
  410 IF P(P,1)<0 THEN LET P(P,1)=0
  420 IF P(P,1)>20 THEN LET P(P,1)=20
  430 IF P(P,2)<0 THEN LET P(P,2)=0
  440 IF P(P,2)>31 THEN LET P(P,2)=31
  450 LET P(P,PI)=ATTR (P(P,1),P(P,2))
  460 IF P(P,PI)=39 THEN LET P(P,PI)=P(1+(P=1),PI)
  470 IF P(P,PI)=41 THEN GO TO 930
  480 IF P(P,PI)=97 THEN GO TO 560
  490 PRINT B$;
  500 IF P(P,PI)=36 THEN PRINT "ON THE FAIRWAY"
  510 IF P(P,PI)=32 THEN PRINT "IN THE ROUGH"
  520 IF P(P,PI)=4 THEN PRINT "IN THE TREES..."
  530 IF P(P,PI)=48 THEN PRINT "IN A BUNKER."
  540 IF P(P,PI)=100 THEN PRINT "ON THE GREEN."
  550 PRINT AT P(P,1),P(P,2);"\e": PAUSE 150: PRINT AT P(P,1),P(P,2);"\e": GO TO 580
  560 LET P(P,5)=S+P(P,6)-PAR: LET P(P,4)=P(P,4)+P(P,5): LET HO=HO+1
  570 PRINT B$;"Player ";P;" Holed out in ";S+P(P,6): IF S+P(P,6)=1 THEN FOR I=1 TO 30: BEEP .08,10+RND*20: NEXT I: PRINT B$;"YOU BUY THE DRINKS AT THE 19th."
  580 PAUSE VAL "200": NEXT P
  590 IF HO=PL THEN GO TO 610
  600 NEXT S: REM RESET  R&R SOFTWARE
  610 BORDER 4: PAPER 5: CLS : PRINT " SCORE    TS 2000 GOLF     CARD "
  620 PRINT 'TAB 9+1*(CL=9);CL;" HOLE COURSE"
  630 PRINT '"Hole - ";H;"  Par - ";PAR;"  Yards - ";YRD
  640 PRINT '"PLAYER";TAB 10;"HOLE";TAB 20;"COURSE": PRINT "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀"
  650 FOR I=1 TO PL: PRINT '"   ";I;TAB 7;
  660 IF NOT P(I,5) THEN PRINT "  On";: GO TO 700
  670 PRINT ABS P(I,5);
  680 IF P(I,5)<0 THEN PRINT " Under";
  690 IF P(I,5)>0 THEN PRINT " Over";
  700 PRINT " Par";TAB 19;
  710 IF NOT P(I,4) THEN PRINT " On";: GO TO 750
  720 PRINT ABS P(I,4);
  730 IF P(I,4)<0 THEN PRINT " Under";
  740 IF P(I,4)>0 THEN PRINT " Over";
  750 PRINT " Par": NEXT I
  760 IF H=CL THEN GO TO 800
  770 PRINT B$;" PRESS ENTER TO START NEXT HOLE "
  780 IF INKEY$<>CHR$ 13 THEN GO TO 780
  790 NEXT H: REM RESET  R&R SOFTWARE
  800 PRINT AT 16,2;"Would you like another game?";AT 18,11;"""Y"" OR ""N"""
  810 IF INKEY$="Y" THEN RUN 140
  820 IF INKEY$="N" THEN PRINT AT 20,7;"Thanks for playing": STOP 
  830 GO TO 810
  840 PRINT B$;"  Player ";P;" Press ENTER to play"
  850 PRINT AT P(P,1),P(P,2);"\e"
  860 IF INKEY$<>CHR$ 13 THEN GO TO 860
  870 PRINT AT P(P,1),P(P,2);"\e"
  880 PRINT B$;"Direction? 0-12": INPUT D: IF D<0 OR D>12 THEN PRINT B$;"INVALID Direction MUST be 0-12": PAUSE 150: GO TO 880
  890 LET D=INT (D*100+.5)/100
  900 PRINT B$;"Direction= ";D;" Strength? 0-100": INPUT ST: IF NOT ST THEN GO TO 880
  910 IF ST<0 OR ST>100 THEN PRINT B$;"INVALID Strength MUST be 0-100": PAUSE 150: GO TO 900
  920 LET ST=INT (ST*100+.5)/100: PRINT B$;"Direction= ";D;" Strength= ";ST: PAUSE 100: RETURN 
  930 PRINT B$;"LANDED IN WATER. Penalty Stroke"
  940 FOR I=INT (P(P,2)) TO 0 STEP -1
  950 IF ATTR (P(P,1),I)=41 THEN NEXT I
  960 LET P(P,2)=I: LET P(P,6)=P(P,6)+1: PAUSE 150: GO TO 450
  970 DATA 0,0,4,0,0,64,0,0
  980 DATA 255,247,227,213,247,227,213,247
  990 DATA 0,96,144,9,102,144,9,6
 1000 DATA 12,60,12,4,4,30,37,30
 1010 DATA 0,28,62,62,62,28,0,0
 1020 BORDER 7: PAPER 7: CLS : LET T$="      TS 2000  PRO-AM GOLF      ": PRINT T$''"   A GAME FOR 1 OR 2 PLAYERS"
 1030 PRINT '" You may play a 9 hole course ORa full 18 hole course. Each holeis generated at RANDOM so no twogames are the same."
 1040 PRINT '" When its your turn to play yourball will be set flashing. When ready for move,Press the ENTER  key. You must now enter a value (0-12, As on a Clock) to select your DIRECTION. Now give a valuefor STRENGTH of shot (1-100), anentry of ZERO will return you tothe direction input.    Decimal inputs ie. 3.25 are allowed."
 1050 PRINT B$;"Hit ENTER for more instructions."
 1060 IF INKEY$<>CHR$ 13 THEN GO TO 1060
 1070 CLS : PRINT T$''"The GREEN =      FAIRWAY =        ROUGH = \a\a\a  BUNKER =    ","WATER HAZZARD = \c\c\c  TREES = \b","  The HOLE = \d   The BALL = \e"
 1080 PRINT '"When playing from the ROUGH yourball will not move as far as it will on the FAIRWAY. If you landin a bunker you may not get out first shot.   When in the TREES the ball MAY bounce off in any  direction.  Land in the WATER orgo OUT OF BOUNDS and you incur  ONE penalty stroke."
 1090 PRINT '"   I hope you enjoy your game  "''"Press ENTER to start round OR   ""P"" to see instructions again."
 1100 IF INKEY$="P" THEN GO TO 1020
 1110 IF INKEY$<>CHR$ 13 THEN GO TO 1100
 1120 RETURN 
 1130 ON ERR RESET 
 1140 PAUSE 100
 1150 ON ERR GO TO 1130
 1160 ON ERR CONTINUE 
 1170 SAVE "golf" LINE 140: GO TO 1170

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

People

No people associated with this content.

Scroll to Top