CLS:CLEAR, 25000: CLEAR, 50000:GOTO redux recoup: CLS RUN "j:programs/progmenu" redux: ON BREAK GOSUB recoup: BREAK ON REM ---------- ' Hockey ' Joseph Bernardi, 1612 Stowe Rd., Reston, VA 22094 1/87 LOCATE 10,10:PRINT "Patience please. Setting up." SAY TRANSLATE$("WELCOME TO THE AMIGA HOCKEY LEAGUE.") CLS WIDTH 80 SUB TitleScreen (Depth%) STATIC SHARED Blk,Blu,Grn,Cyn,Red,Org,Yel,Wht IF FirstTime=0 THEN FirstTime=1 SCREEN 1,640,200,Depth%,2 WINDOW 2,,,8,1 COLOR ,0:CLS PALETTE 0,0,0,0 :Blk=0: 'Black PALETTE 1,0,0,1 :Blu=1: 'Blue PALETTE 2,0,0.75,0 :Grn=2: 'Green PALETTE 3,0,1,1 :Cyn=3: 'Cyan PALETTE 4,1,0,0 :Red=4: 'Red PALETTE 5,1,0.5,0 :Org=5: 'Orange PALETTE 6,1,0.8,0 :Yel=6: 'Yellow PALETTE 7,1,1,1 :Wht=7: 'White END IF COLOR ,Blk:CLS AREA(40,80):AREA STEP(80,-72):AREA STEP(80,72) COLOR Red:AREAFILL AREA(90,80):AREA STEP(12,-10):AREA STEP(36,0):AREA STEP(12,10) COLOR Blk:AREAFILL AREA(109,55):AREA STEP(20,0):AREA STEP(-10,-12):AREA STEP(-10,12) COLOR Blk:AREAFILL LINE(240,8)-(400,80),Red,bf LINE(293,8)-STEP(54,25),Blk,bf LINE(293,80)-STEP(54,-25),Blk,bf LINE(440,8)-(600,80),Red,bf LINE(493,8)-(600,58),Blk,bf FOR c=40 TO 60 STEP 20 AREA (c,130):AREA STEP(15,0):AREA STEP(20,10):AREA STEP(-15,0) COLOR Blu:AREAFILL:NEXT FOR c=60 TO 80 STEP 20 AREA (c,140):AREA STEP(15,0):AREA STEP(20,10):AREA STEP(-15,0) COLOR Cyn:AREAFILL:NEXT FOR c=80 TO 100 STEP 20 AREA (c,150):AREA STEP(15,0):AREA STEP(20,-10):AREA STEP(-15,0) COLOR Grn:AREAFILL:NEXT FOR c=100 TO 120 STEP 20 AREA (c,140):AREA STEP(15,0):AREA STEP(20,-10):AREA STEP(-15,0) COLOR Yel:AREAFILL:NEXT FOR c=120 TO 140 STEP 20 AREA (c,130):AREA STEP(15,0):AREA STEP(20,-10):AREA STEP(-15,0) COLOR Org:AREAFILL:NEXT FOR c=140 TO 160 STEP 20 AREA (c,120):AREA STEP(15,0):AREA STEP(20,-10):AREA STEP(-15,0) COLOR Red:AREAFILL:NEXT FOR c=580 TO 600 STEP 20 AREA (c,130):AREA STEP(-15,0):AREA STEP(-20,10):AREA STEP(15,0) COLOR Blu:AREAFILL:NEXT FOR c=560 TO 580 STEP 20 AREA (c,140):AREA STEP(-15,0):AREA STEP(-20,10):AREA STEP(15,0) COLOR Cyn:AREAFILL:NEXT FOR c=540 TO 560 STEP 20 AREA (c,150):AREA STEP(-15,0):AREA STEP(-20,-10):AREA STEP(15,0) COLOR Grn:AREAFILL:NEXT FOR c=520 TO 540 STEP 20 AREA (c,140):AREA STEP(-15,0):AREA STEP(-20,-10):AREA STEP(15,0) COLOR Yel:AREAFILL:NEXT FOR c=500 TO 520 STEP 20 AREA (c,130):AREA STEP(-15,0):AREA STEP(-20,-10):AREA STEP(15,0) COLOR Org:AREAFILL:NEXT FOR c=480 TO 500 STEP 20 AREA (c,120):AREA STEP(-15,0):AREA STEP(-20,-10):AREA STEP(15,0) COLOR Red:AREAFILL:NEXT COLOR Blu,Blk:LOCATE 23,14 PRINT "Joseph Bernardi 1612 Stowe Rd. Reston VA 22094"; END SUB TitleScreen 3 COLOR Grn LOCATE 13,38:PRINT "T H E" LOCATE 15,36:PRINT "A M I G A" LOCATE 17,35:PRINT "H O C K E Y" LOCATE 19,35:PRINT "L E A G U E" COLOR Yel:LOCATE 21,26:PRINT "Press Left Button to Continue" WHILE MOUSE(0)=0:WEND WINDOW CLOSE 2:SCREEN CLOSE 1 DIM tm(21),c$(21),cphon$(21),tm$(21),r$(21),g$(21),gphon$(21),g1$(21),g1phon$(21),g2$(21),g2phon$(21),pts(21) Initialize: PALETTE 0,0,0.3,0.6:PALETTE 1,1,1,1:PALETTE 2,0,0,0.1 CLS RANDOMIZE TIMER WIDTH 60 COLOR 2,3 PRINT " WALES CONFERENCE "," CAMPBELL CONFERENCE ":PRINT COLOR 2,0:PRINT " PATRICK"," ADAMS"," SMYTHE"," NORRIS":PRINT COLOR 1,0 RESTORE Teams FOR i=1 TO 21 READ tm(i),c$(i),cphon$(i),tm$(i),r$(i),g1$(i),g1phon$(i),g2$(i),g2phon$(i),pts(i):COLOR 2,0:PRINT USING "##";tm(i);:COLOR 1,0:PRINT " "+tm$(i), NEXT WIDTH 80 LINE (35,90)-(185,110),2,bf:LINE (35,90)-(185,110),3,b LOCATE 13,9:COLOR 1,2:PRINT "SELECT TEAMS" COLOR 1,0 SAY TRANSLATE$("PLEASE SELECT THE TEAMS."):LINE(308,115)-(504,138),2,bf:LINE(308,115)-(504,138),3,b 1 LOCATE 16,2:INPUT "ENTER NUMBER OF VISITING TEAM: ",T1:IF T1<0 OR T1>21 THEN 1 LOCATE 16,43:COLOR 3,2:PRINT c$(T1)+" "+tm$(T1):COLOR 1,0 2 LOCATE 17,2:INPUT "ENTER NUMBER OF HOME TEAM: ",T2::IF T2<0 OR T2>21 THEN 2 LOCATE 17,43:COLOR 3,2:PRINT c$(T2)+" "+tm$(T2):COLOR 1,0 10 LOCATE 19,2:PRINT STRING$(42," ") LOCATE 19,2:INPUT "WHICH TEAM ARE YOU? (ENTER NUMBER) ",T3 IF T3<>T1 AND T3<>T2 THEN 10 IF T3=T1 THEN T4=T2 :ELSE T4=T1 CLS:LINE(0,0)-(607,40),1,bf:FOR c=0 TO 3:LINE(0+c,0+c)-(609+c,41+c),3,b:NEXT:COLOR 2,1 LOCATE 2,5:PRINT "TONIGHT'S GAME IS ";c$(T1);" ";tm$(T1);" AT ";c$(T2);" ";tm$(T2) SAY TRANSLATE$("TUNIGHT'S GAME IS "+cphon$(T1)+tm$(T1)+" AT "+cphon$(T2)+tm$(T2)+".") LOCATE 4,15:PRINT "WELCOME TO ";r$(T2) IF T2=8 THEN SAY TRANSLATE$("WELCOME TO MAYPLE LEAF GARDENS."):GOTO Prob IF T2=9 THEN SAY TRANSLATE$("WELCOME TO CIVVIC ARENA."):GOTO Prob IF T2=12 THEN SAY TRANSLATE$("WELCOME TO JOE LEWIS ARENA."):GOTO Prob IF T2=19 THEN SAY TRANSLATE$("WELCOME TO THE LOS ANJELLIS FORUM."):GOTO Prob IF T2=20 THEN SAY TRANSLATE$("WELCOME TO SAINT LEWIS ARENA.") :ELSE SAY TRANSLATE$("WELCOME TO "+r$(T2)+".") Prob: ProbVis=INT(100*(pts(T1)/(pts(T1)+pts(T2))+0.005))/100-0.05 ProbHome=1-ProbVis GOSUB Delay:GOSUB Delay COLOR 1,0 period=1 CLS PALETTE 3,1,0,0 LINE(350,5)-(610,185),1,bf ' RINK LINE(351,94)-(609,96),3,b FOR r=351 TO 599 STEP 8:LINE(r,95)-(r+4,95),3:NEXT 'RED LINE LINE(607,95)-(609,95),3 LINE(351,64)-(609,66),0,bf:LINE(351,124)-(609,126),0,bf ' BLUE LINES LINE(350,14)-(610,15),3,bf:LINE(350,175)-(610,176),3,bf ' GOAL LINES LINE(460,176)-(500,180),3,bf:LINE(460,14)-(500,10),3,bf ' GOALS CIRCLE(480,95),32,3:CIRCLE(415,33),32,3:CIRCLE(545,33),32,3 CIRCLE(415,157),32,3:CIRCLE(545,157),32,3 FOR n=1 TO 4 ' FACEOFF SPOTS CIRCLE(480,95),n,0:CIRCLE(415,33),n,3:CIRCLE(545,33),n,3:CIRCLE(415,157),n,3:CIRCLE(545,157),n,3:CIRCLE(415,75),n,3:CIRCLE(545,75),n,3:CIRCLE(415,115),n,3:CIRCLE(545,115),n,3 NEXT LINE(15,0)-(330,63),2,bf ' SCOREBOARD mins=20:secs=0 Scoreboard: COLOR 3,2 PRINT :PRINT TAB(16 -LEN(tm$(T1)));tm$(T1); COLOR 1,2:PRINT TAB(21);"TIME"; COLOR 3,2:PRINT TAB(30);tm$(T2) COLOR 1,2 PRINT :PRINT TAB(11);vscore:LOCATE 4,20:PRINT USING "##";mins:LOCATE 4,22:PRINT ": 0":LOCATE 4,23:PRINT USING "#";secs LOCATE 4,32:PRINT hscore PRINT :PRINT TAB(9);"PENALTY";TAB(20);"PERIOD";TAB(30);"PENALTY" LOCATE 7,21:PRINT period COLOR 1,0 x=RND IF x>0.45 THEN g$(T1)=g1$(T1) gphon$(T1)=g1phon$(T1) ELSE g$(T1)=g2$(T1) gphon$(T1)=g2phon$(T1) END IF x=RND IF x>0.45 THEN g$(T2)=g1$(T2) gphon$(T2)=g1phon$(T2) ELSE g$(T2)=g2$(T2) gphon$(T2)=g2phon$(T2) END IF COLOR 2,1:LOCATE 22,58:PRINT LEFT$(g$(T3),7):LINE(440,175)-(520,175),3 LOCATE 3,58:IF T3=T1 THEN PRINT LEFT$(g$(T2),7) :ELSE PRINT LEFT$(g$(T1),7) IF T1=5 AND T2=17 THEN cphon$(T1)=tm$(T1) cphon$(T2)=tm$(T2) END IF IF T1=17 AND T2=5 THEN cphon$(T1)=tm$(T1) cphon$(T2)=tm$(T2) END IF SAY TRANSLATE$("THE STARTING GOALIES TONIGHT ARE ") SAY TRANSLATE$(gphon$(T1)+" FOR "+cphon$(T1)) SAY TRANSLATE$("AND ") SAY TRANSLATE$(gphon$(T2)+" FOR "+cphon$(T2)+".") WIDTH 43 z=4 x=480:y=94 qz: OPEN ":puck" FOR INPUT AS #1:OBJECT.SHAPE 1,INPUT$(LOF(1),1):CLOSE #1 OBJECT.X 1,x:OBJECT.Y 1,y:OBJECT.ON COLOR 2,0 LOCATE 9,1:PRINT STRING$(43,"_"):LOCATE 15,1:PRINT STRING$(43,"_") COLOR 1,0 f$=" F A C E O F F ":p$="PUCK IS ":z1$="DEEP IN YOUR END"+SPACE$(10) z2$="INSIDE YOUR BLUE LINE"+SPACE$(6):z3$="IN NEAR NEUTRAL ZONE"+SPACE$(7) z4$="AT CENTER ICE"+SPACE$(14):z5$="IN FAR NEUTRAL ZONE"+SPACE$(8) z6$="INSIDE OPPONENT'S BLUE LINE":z7$="DEEP IN OPPONENT'S ZONE"+SPACE$(4) COLOR 3,1:LOCATE 12,8:PRINT f$:LOCATE 14,5:COLOR 2,1:PRINT p$+z4$:GOSUB Delay:COLOR 1,0:GOSUB Move GOSUB Possession GOSUB Update GOTO Whichteam Delay: pause&=TIMER:WHILE TIMER4 THEN Play CompPlay: GOSUB Delay GOSUB AnyPenalty p=RND IF z>4 THEN Comp7 IF z<=4 THEN Comp5 Comp7: ' if CompPen=1 then Comp6 IF p>0.55 THEN Pass IF p>0.05 THEN Stickhandle GOTO Dump Comp6 IF p>0.6 THEN Dump IF p>0.3 THEN Stickhandle GOTO Pass Comp5: IF z=4 THEN Comp4 IF z=3 THEN Comp3 IF z=2 THEN Comp2 IF z=1 THEN Comp1 Comp4: IF p>0.55 THEN Pass IF p>0.1 THEN Stickhandle GOTO Dump Comp3: IF p>0.8 THEN Pass IF p>0.4 THEN Stickhandle IF p>0.1 THEN Shoot GOTO Dump Comp2: IF p>0.95 THEN Pass IF p>0.8 THEN Stickhandle GOTO Shoot Comp1: IF p>0.1 AND p<0.15 THEN Pass IF p>0.15 AND p<0.2 THEN Stickhandle GOTO Shoot AnyPenalty: q=RND IF q<0.03 THEN GOSUB Penalty RETURN Pass: GOSUB Wipeout:GOSUB Erase11 IF TN=T1 THEN p=(RND+ProbVis/5)*10+HomePen-VisPen :ELSE p=(RND+ProbHome/5)*10+VisPen-HomePen LOCATE 11,8 IF p>=4.5 THEN PassComplete IF p>=3.2 AND ABS(4-z)<2 THEN Offside GOTO Intercepted PassComplete: PRINT "PASS COMPLETED TO ";tm$(TN):GOSUB ChangeZone:GOSUB Update:GOTO Whichteam Offside: x=RND*220+360 IF TN=T3 THEN y=57 :ELSE y=130 OBJECT.X 1,x:OBJECT.Y 1,y:GOSUB Suspense PRINT tm$(TN);" OFFSIDE":SAY TRANSLATE$(tm$(TN)+" OFFSIDE."):GOSUB OffsideZone:GOSUB Update:GOTO BluelineFaceoff Intercepted: x=RND*220+360 OBJECT.X 1,x:OBJECT.Y 1,y IF TN=T1 THEN TN=T2 :ELSE TN=T1 PRINT "PASS INTERCEPTED BY "+tm$(TN):GOSUB Update:GOTO Whichteam Stickhandle: GOSUB Wipeout:GOSUB Erase11 LOCATE 11,8 IF TN=T1 THEN p=(RND-ProbVis/5)*10-HomePen+VisPen :ELSE p=(RND-ProbHome/5)*10-VisPen+HomePen IF p<=5 THEN KeepPuck IF p<=6.3 AND ABS(4-z)<2 THEN Offside GOTO LosePuck KeepPuck: GOSUB ChangeZone IF p>8 THEN PRINT "PUCK CONTROLLED BY ";tm$(TN) :ELSE PRINT tm$(TN)+" SKATE WITH PUCK" GOSUB Update:GOTO Whichteam LosePuck: x=RND*220+360 OBJECT.X 1,x:OBJECT.Y 1,y IF TN=T1 THEN TN=T2 :ELSE TN=T1 PRINT "PUCK STOLEN BY "+tm$(TN):GOSUB Update:GOTO Whichteam Shoot: GOSUB Wipeout GOSUB Erase11 LOCATE 11,8:PRINT "HE SHOOTS ";:GOSUB Suspense:dot$=" . . . " FOR i=1 TO 3:PRINT MID$(dot$,i*2,2);:GOSUB Suspense:NEXT IF TN=T1 AND TN=T3 THEN p=(RND+ProbVis/2)-(7-z)/10+(HomePen-VisPen)*0.1 IF TN=T1 AND TN=T4 THEN p=(RND+ProbVis/2)-(z-1)/10+(HomePen-VisPen)*0.1 IF TN=T2 AND TN=T3 THEN p=(RND+ProbHome/2)-(7-z)/10+(VisPen-HomePen)*0.1 IF TN=T2 AND TN=T4 THEN p=(RND+ProbHome/2)-(z-1)/10+(VisPen-HomePen)*0.1 GOSUB Suspense LOCATE 11,23 IF p>=1.03 THEN HeScores IF p>=1 THEN IntoCrowd IF p>=0.9 AND TN=T1 THEN HomeCaught IF p>=0.9 AND TN=T2 THEN VisCaught IF p>=0.6 AND TN=T1 THEN VisKeep IF p>=0.6 AND TN=T2 THEN HomeKeep IF p>=0.3 AND TN=T1 THEN HomeGet IF p>=0.3 AND TN=T2 THEN VisGet GOTO Missed HeScores: x=480 IF TN=T3 THEN z=7:y=10 ELSE z=1:y=176 END IF OBJECT.X 1,x:OBJECT.Y 1,y PRINT " AND SCORES!!":GOSUB RedLight:GOSUB ChangeScore:GOSUB AnnounceGoal:GOSUB Update:GOTO Centerfaceoff AnnounceGoal: IF TN=T1 AND VisPenHomePen THEN SAY TRANSLATE$("SHORT HANDED GOAL BY "+cphon$(TN)):RETURN IF TN=T1 THEN SAY TRANSLATE$("GOAL BY "+cphon$(TN)):RETURN IF TN=T2 AND VisPenHomePen THEN SAY TRANSLATE$("POWER PLAY GOAL BY "+cphon$(TN)):VisPen=0:vpmins=0:vpsecs=0:LOCATE 7,10:PRINT " ":RETURN: IF TN=T2 THEN SAY TRANSLATE$("GOAL BY "+cphon$(TN)):RETURN IntoCrowd: x=480-RND*20 IF TN=T3 THEN z=7:y=0 ELSE z=1:y=170:x=338 END IF OBJECT.X 1,x:OBJECT.Y 1,y PRINT " SHOT DEFLECTED INTO CROWD!":GOSUB Update:GOSUB Delay:GOSUB Erase11:GOTO CircleFaceoff HomeCaught: x=480:hsave=hsave+1 IF T2=T3 THEN z=1:y=165 ELSE z=7:y=20 END IF OBJECT.X 1,x:OBJECT.Y 1,y PRINT " SHOT GLOVED BY "+g$(T2) GOSUB Update:GOSUB Delay:GOSUB Erase11:GOTO CircleFaceoff VisCaught: x=480:vsave=vsave+1 IF T2=T3 THEN z=7:y=20 ELSE z=1:y=166 END IF OBJECT.X 1,x:OBJECT.Y 1,y PRINT " SHOT GLOVED BY "+g$(T1) GOSUB Update:GOSUB Delay:GOSUB Erase11:GOTO CircleFaceoff VisKeep: GOSUB WhichSave PRINT g$(T2)+ "...PUCK REBOUNDS TO "+tm$(T1):GOSUB Update:hsave=hsave+1:GOTO Whichteam HomeKeep: GOSUB WhichSave PRINT g$(T1)+ "...PUCK REBOUNDS TO "+tm$(T2):GOSUB Update:vsave=vsave+1:GOTO Whichteam HomeGet: GOSUB WhichSave PRINT g$(T2)+ "...PUCK REBOUNDS TO ";tm$(T2):TN=T2:GOSUB Update:hsave=hsave+1:GOTO Whichteam VisGet: GOSUB WhichSave PRINT g$(T1)+ "...PUCK REBOUNDS TO ";tm$(T1):TN=T1:GOSUB Update:vsave=vsave+1:GOTO Whichteam WhichSave: IF TN=T3 THEN y=20 :ELSE y=165 OBJECT.X 1,480:OBJECT.Y 1,y:GOSUB Suspense x=220*p+360 IF TN=T3 THEN z=6:y=54 ELSE z=2:y=134 END IF OBJECT.X 1,x:OBJECT.Y 1,y p=RND IF p>0.8 THEN PRINT "STICK SAVE BY ";:RETURN IF p>0.6 THEN PRINT "SKATE SAVE BY ";:RETURN IF p>0.4 THEN PRINT "PAD SAVE BY ";:RETURN IF p>0.2 THEN PRINT "KICKED ASIDE BY ";:RETURN PRINT "DEFLECTED BY ";:RETURN Missed: p=RND:IF p<0.5 THEN x1=RND*40+400 :ELSE x1=RND*40+480 IF TN=T3 THEN y=10 :ELSE y=175 OBJECT.X 1,x1:OBJECT.Y 1,y:GOSUB Suspense IF TN=T3 THEN y=54 :ELSE y=134 x=2*x1-x IF x<351 THEN x=351:IF x>580 THEN x=580 IF TN=T3 AND z<4 THEN GOTO LongMiss IF TN<>T3 AND z>4 THEN GOTO LongMiss OBJECT.X 1,x:OBJECT.Y 1,y p=RND IF p>0.5 THEN TN=T2 :ELSE TN=T1 PRINT " SHOT MISSES...PUCK REBOUNDS TO "+tm$(TN):GOSUB Suspense:GOSUB Update:GOTO Whichteam ChangeZone: IF TN=T3 THEN z=z+1:IF z>7 THEN z=7 IF TN=T4 THEN z=z-1:IF z<1 THEN z=1 GOSUB Move RETURN Move: x=RND*220+360 IF z=1 THEN y=158+INT(RND*6)-3 IF z=2 THEN y=134+INT(RND*6)-3 IF z=3 THEN y=114+INT(RND*6)-3 IF z=4 THEN y=94+INT(RND*6)-3 IF z=5 THEN y=74+INT(RND*6)-3 IF z=6 THEN y=54+INT(RND*6)-3 IF z=7 THEN y=30+INT(RND*6)-3 OBJECT.X 1,x:OBJECT.Y 1,y RETURN OffsideZone: IF x<480 THEN x=415 :ELSE x=545 IF TN=T3 THEN z=5 y=75 ELSE z=3 y=115 END IF OBJECT.X 1,x:OBJECT.Y 1,y RETURN Erase11: WIDTH 43:LOCATE 11,1:COLOR 1,0:PRINT STRING$(129," "):RETURN RedLight: IF TN=T3 THEN y=11 :ELSE y=177 FOR n=1 TO 80 FOR c=1 TO 3 STEP 2 LINE(462,y)-(498,y+2),c,bf NEXT:NEXT RETURN ChangeScore: COLOR 3,2 IF TN=T1 THEN vscore=vscore+1 :ELSE hscore=hscore+1 GOSUB Siren IF TN=T1 THEN LOCATE 4,11:PRINT vscore:GOSUB Delay:COLOR 1,2:LOCATE 4,11:PRINT vscore IF TN=T2 THEN LOCATE 4,32:PRINT hscore:GOSUB Delay:COLOR 1,2:LOCATE 4,32:PRINT hscore IF period=4 THEN SuddenDeath RETURN Siren: FOR f=400 TO 800 STEP 30:SOUND f,1,220:NEXT FOR f=800 TO 200 STEP -15:SOUND f,1:NEXT RETURN Dump: GOSUB Erase11 IF x<480 THEN x=360 :ELSE x=580 IF TN=T3 THEN GOSUB HumanDump:GOSUB Update:GOSUB Delay:GOTO Whichteam IF TN=T4 THEN GOSUB ComputerDump:GOSUB Update:GOSUB Delay:GOTO Whichteam LongMiss: GOSUB Erase11 IF TN=T3 THEN GOSUB HumanDump:GOSUB Update:GOSUB Delay:GOTO Whichteam IF TN=T4 THEN GOSUB ComputerDump:GOSUB Update:GOSUB Delay:GOTO Whichteam HumanDump: y=6:OBJECT.X 1,x:OBJECT.Y 1,y:GOSUB Delay:LOCATE 11,8 IF TN=T1 THEN HumVisDump :ELSE HumHomeDump HumVisDump: IF z<4 AND VisPen<=HomePen THEN SAY TRANSLATE$("ICING."):PRINT "ICING--FACEOFF IN "+c$(T1)+" ZONE":TN=T2:z=1:GOSUB ShowZone:GOSUB Update:GOSUB Delay:GOTO CircleFaceoff IF z>=4 THEN :PRINT "PUCK BOUNCES INTO CORNER--":LOCATE 12,8:PRINT "TAKEN BY "+tm$(T2):TN=T2:z=7:GOSUB ShowZone:GOSUB Update:GOSUB Delay:GOTO Whichteam IF VisPen>HomePen THEN PRINT "PUCK BOUNCES INTO CORNER--":LOCATE 12,8:PRINT "TAKEN BY "+tm$(T2):TN=T2:z=7:GOSUB ShowZone GOSUB Update:GOSUB Delay:GOTO Whichteam HumHomeDump: IF z<4 AND HomePen<=VisPen THEN SAY TRANSLATE$("ICING."):PRINT "ICING--FACEOFF IN "+c$(T2)+" ZONE":TN=T1:z=1:GOSUB ShowZone:GOSUB Update:GOSUB Delay:GOTO CircleFaceoff IF z>=4 THEN PRINT "PUCK BOUNCES INTO CORNER--":LOCATE 12,8:PRINT "TAKEN BY "+tm$(T1):TN=T1:z=7:GOSUB ShowZone:GOSUB Update:GOSUB Delay:GOTO Whichteam IF HomePen>VisPen THEN PRINT "PUCK BOUNCES INTO CORNER--":LOCATE 12,1:PRINT "TAKEN BY "+tm$(T1):TN=T1:z=7:GOSUB ShowZone GOSUB Update:GOSUB Delay:GOTO Whichteam ComputerDump: y=180:OBJECT.X 1,x:OBJECT.Y 1,y:GOSUB Delay:LOCATE 11,8 IF TN=T1 THEN CompVisDump :ELSE CompHomeDump CompVisDump: IF z>4 AND VisPen<=HomePen THEN SAY TRANSLATE$("ICING."):PRINT "ICING--FACEOFF IN "+c$(T1)+" ZONE":TN=T2:z=7:GOSUB ShowZone:GOSUB Update:GOSUB Delay:GOTO CircleFaceoff IF z<=4 THEN PRINT "PUCK BOUNCES INTO CORNER--":LOCATE 12,8:PRINT "TAKEN BY "+tm$(T2):TN=T2:z=1:GOSUB ShowZone:GOSUB Update:GOSUB Delay:GOTO Whichteam IF VisPen>HomePen THEN PRINT "PUCK BOUNCES INTO CORNER--":LOCATE 12,1:PRINT "TAKEN BY "+tm$(T2):TN=T2:z=1 GOSUB ShowZone GOSUB Update:GOSUB Delay:GOTO Whichteam CompHomeDump: IF z>4 AND HomePen<=VisPen THEN SAY TRANSLATE$("ICING."):PRINT "ICING--FACEOFF IN "+c$(T2)+" ZONE":TN=T1:z=7:GOSUB ShowZone:GOSUB Update:GOSUB Delay:GOTO CircleFaceoff IF z<=4 THEN PRINT "PUCK BOUNCES INTO CORNER--":LOCATE 12,8:PRINT "TAKEN BY "+tm$(T1):TN=T1:z=1:GOSUB ShowZone:GOSUB Update:GOSUB Delay:GOTO Whichteam IF HomePen>VisPen THEN PRINT "PUCK BOUNCES INTO CORNER--":LOCATE 12,1:PRINT "TAKEN BY "+tm$(T1):TN=T1:z=1:GOSUB ShowZone GOSUB Update:GOSUB Delay:GOTO Whichteam Update: IF secs>0 THEN secs=secs-1 ELSE secs=5 IF mins>0 THEN mins=mins-1 END IF END IF GOSUB ShowZone:GOSUB GameClock RETURN ShowZone: LOCATE 14,13:COLOR 3,1 IF z=1 THEN PRINT z1$:COLOR 1,0:RETURN IF z=2 THEN PRINT z2$:COLOR 1,0:RETURN COLOR 2,1 IF z=3 THEN PRINT z3$:COLOR 1,0:RETURN IF z=4 THEN PRINT z4$:COLOR 1,0:RETURN IF z=5 THEN PRINT z5$:COLOR 1,0:RETURN IF z=6 THEN PRINT z6$:COLOR 1,0:RETURN PRINT z7$:COLOR 1,0:RETURN GameClock: COLOR 1,2:LOCATE 4,20:PRINT USING "##";mins:LOCATE 4,22:PRINT ": 0":LOCATE 4,23:PRINT USING "#";secs IF VisPen=1 THEN GOSUB UpdateVis IF HomePen=1 THEN GOSUB UpdateHome IF mins=1 AND secs=0 THEN GOSUB AnnounceMinute:RETURN IF mins=0 AND secs=0 THEN GOSUB Horn:GOSUB Delay:GOSUB Erase11:LOCATE 14,1:PRINT SPACE$(15)+"END OF PERIOD"+SPACE$(15) IF period=1 THEN vsave1=vsave:hsave1=hsave:vscore1=vscore:hscore1=hscore:vshots1=vscore1+hsave1:hshots1=hscore1+vsave1 SAY TRANSLATE$("END OF FIRST PERIUD.") LOCATE 11,1:PRINT "SHOTS ON GOAL IN THE PERIOD":PRINT tm$(T1);" :";vshots1 PRINT tm$(T2);" :";hshots1:GOSUB Delay:GOSUB Delay:GOSUB Delay END IF IF period=2 THEN vsave2=vsave-vsave1:hsave2=hsave-hsave1:vscore2=vscore-vscore1:hscore2=hscore-hscore1:vshots2=vscore2+hsave2:hshots2=hscore2+vsave2 SAY TRANSLATE$("END OF SECOND PERIUD.") LOCATE 11,1:PRINT "SHOTS ON GOAL IN THE PERIOD":PRINT tm$(T1);" :";vshots2 PRINT tm$(T2);" :";hshots2:GOSUB Delay:GOSUB Delay:GOSUB Delay END IF IF period=3 THEN vsave3=vsave-vsave1-vsave2:hsave3=hsave-hsave1-hsave2:vscore3=vscore-vscore1-vscore2:hscore3=hscore-hscore1-hscore2:vshots3=vscore3+hsave3:hshots3=hscore3+vsave3 SAY TRANSLATE$("END OF THIRD PERIUD.") LOCATE 11,1:PRINT "SHOTS ON GOAL IN THE PERIOD":PRINT tm$(T1);" :";vshots3 PRINT tm$(T2);" :";hshots3:GOSUB Delay:GOSUB Delay:GOSUB Delay:GOTO GameOver END IF IF period=4 THEN vsave4=vsave-vsave1-vsave2-vsave3:hsave4=hsave-hsave1-hsave2-hsave3:vscore4=vscore-vscore1-vscore2-vscore3:hscore4=hscore-hscore1-hscore2-hscore3:vshots4=vscore4+hsave4:hshots4=hscore4+vsave4 SAY TRANSLATE$("END OF OVERTIME.") LOCATE 11,1:PRINT "SHOTS ON GOAL IN OVERTIME":PRINT tm$(T1);" :";vshots4 PRINT tm$(T2);" :";hshots4:GOSUB Delay:GOSUB Delay:GOSUB Delay:GOTO GameOver END IF period=period+1:mins=20:COLOR 1,2:LOCATE 4,20:PRINT USING "##";mins:LOCATE 4,22:PRINT ":":LOCATE 7,21:PRINT period:GOSUB Delay:GOSUB Delay:GOTO Centerfaceoff ELSE COLOR 1,0:RETURN END IF COLOR 1,0 RETURN Horn: SOUND 500,36,220 FOR y=11 TO 177 STEP 166:LINE(462,y)-(498,y+2),0,bf:NEXT GOSUB Delay:RETURN UpdateVis: IF vpsecs>0 THEN vpsecs=vpsecs-1 ELSE vpsecs=5 vpmins=vpmins-1 END IF IF vpmins<0 THEN vpmins=0 IF vpmins=0 AND vpsecs=0 THEN COLOR 3,2:LOCATE 7,9:PRINT " 0:00":VisPen=0:SAY TRANSLATE$(cphon$(T1)+" BACK AT FULL STRENGTH."):IF T1=T4 THEN CompPenalty=0:GOSUB PenClock:RETURN GOSUB PenClock RETURN UpdateHome: IF hpsecs>0 THEN hpsecs=hpsecs-1 ELSE hpsecs=5 hpmins=hpmins-1 END IF IF hpmins<0 THEN hpmins=0 IF hpmins=0 AND hpsecs=0 THEN COLOR 3,2:LOCATE 7,30:PRINT " 0:00":HomePen=0:SAY TRANSLATE$(cphon$(T2)+" BACK AT FULL STRENGTH."):IF T2=T4 THEN CompPenalty=0:GOSUB PenClock:RETURN GOSUB PenClock RETURN PenClock: COLOR 3,2 IF vpmins>0 OR vpsecs>0 THEN LOCATE 7,9:PRINT vpmins:LOCATE 7,11:PRINT ": 0":LOCATE 7,12:PRINT USING "#";vpsecs IF VisPen=0 THEN LOCATE 7,10:PRINT " " IF hpmins>0 OR hpsecs>0 THEN LOCATE 7,30:PRINT hpmins:LOCATE 7,32:PRINT ": 0":LOCATE 7,33:PRINT USING "#";hpsecs IF HomePen=0 THEN LOCATE 7,31:PRINT " " RETURN AnnounceMinute: IF period<3 THEN SAY TRANSLATE$("LAST MINNIT TO PLAY IN THE PERIUD.") :ELSE SAY TRANSLATE$("LAST MINNIT TO PLAY IN THE GAME.") RETURN Penalty: x=RND:IF x<0.5 THEN TN=T1 :ELSE TN=T2 IF TN=T1 AND VisPen=1 THEN VisPen=1:RETURN IF TN=T2 AND HomePen=1 THEN HomePen=1:RETURN GOSUB WhatPenalty GOSUB Erase11 LOCATE 11,1 PRINT "PENALTY ON ";tm$(TN);" FOR ";Penalty$:SAY TRANSLATE$("PENALTY ON "+cphon$(TN)+" FOR "+Penalty$+".") IF TN=T1 THEN vpmins=2:vpsecs=1:VisPen=1:GOSUB ManOrComp:GOSUB Update:GOTO Centerfaceoff IF TN=T2 THEN hpmins=2:hpsecs=1:HomePen=1:GOSUB ManOrComp:GOSUB Update:GOTO Centerfaceoff ManOrComp: IF TN=T4 THEN CompPenalty=1 RETURN WhatPenalty: x=RND IF x>0.91 THEN Penalty$="SLASHING":RETURN IF x>=0.82 AND x<0.91 THEN Penalty$="HOOKING":RETURN IF x>=0.73 AND x<0.82 THEN Penalty$="HOLDING":RETURN IF x>=0.64 AND x<0.73 THEN Penalty$="HIGH STICKING":RETURN IF x>=0.55 AND x<0.64 THEN Penalty$="BOARDING":RETURN IF x>=0.46 AND x<0.55 THEN Penalty$="CROSS CHECKING":RETURN IF x>=0.37 AND x<0.46 THEN Penalty$="ELBOWING":RETURN IF x>=0.28 AND x<0.37 THEN Penalty$="ROUGHING":RETURN IF x>=0.19 AND x<0.28 THEN Penalty$="TRIPPING":RETURN IF x>=0.1 AND x<0.19 THEN Penalty$="CHARGING":RETURN Penalty$="INTERFERENCE":RETURN Centerfaceoff: x=479:y=93 OBJECT.X 1,x:OBJECT.Y 1,y z=4:GOSUB Erase11:COLOR 2,1:LOCATE 14,5:PRINT p$:GOSUB ShowZone:LOCATE 12,8:COLOR 3,1:PRINT f$:SAY TRANSLATE$("FACE OFF AT THE RED LINE."):COLOR 1,0:GOSUB Possession LINE(460,176)-(500,180),3,bf:LINE(460,14)-(500,10),3,bf ' GOALS GOTO Whichteam BluelineFaceoff: COLOR 1,0:GOSUB Erase11:LOCATE 12,8:COLOR 0,1:PRINT f$:SAY TRANSLATE$("FACE OFF OUTSIDE THE BLUE LINE."):COLOR 1,0 GOSUB Possession GOTO Whichteam CircleFaceoff: COLOR 1,0:GOSUB Erase11:COLOR 2,1:LOCATE 14,9:GOSUB ShowZone:LOCATE 12,8:COLOR 3,1:PRINT f$:COLOR 1,0 IF TN=T1 THEN SAY TRANSLATE$("FACE OFF IN "+cphon$(T2)+"ZONE.") ELSE SAY TRANSLATE$("FACE OFF IN "+cphon$(T1)+"ZONE.") END IF IF x<480 THEN x=415 :ELSE x=545 IF TN=T3 THEN y=33 :ELSE y=154 OBJECT.X 1,x:OBJECT.Y 1,y GOSUB Possession GOTO Whichteam Possession: COLOR 2,1 p=RND:IF p<0.5 THEN TN=T1 :ELSE TN=T2 LOCATE 12,8:PRINT SPACE$(25) LOCATE 12,12:PRINT "WON BY ";tm$(TN) GOSUB Suspense COLOR 1,0 RETURN GameOver: IF vscore=hscore AND period=3 THEN OVERTIME COLOR 1,0 LOCATE 17,1:PRINT "FINAL SCORE: ";tm$(T1);vscore;tm$(T2);hscore vscore$=STR$(vscore):hscore$=STR$(hscore) SAY TRANSLATE$("FYNAL SCORE ."+cphon$(T1)+tm$(T1)+vscore$+","+cphon$(T2)+tm$(T2)+hscore$+".") PRINT "SAVES: ";g$(T1);" (";tm$(T1);") ";vsave PRINT " ";g$(T2);" (";tm$(T2);") ";hsave OBJECT.OFF GOTO AnotherGame OVERTIME: period=4:mins=5:secs=0:COLOR 1,2 SAY TRANSLATE$("FIVE MINNIT SUDDEN DETH OVERTIME.") LOCATE 4,20:PRINT USING "##";mins:LOCATE 4,22:PRINT ":":LOCATE 7,21:PRINT period:GOSUB Delay:GOSUB Delay:COLOR 1,0:GOTO Centerfaceoff SuddenDeath: COLOR 1,0 LOCATE 17,1:PRINT "FINAL SCORE: ";tm$(T1);vscore;tm$(T2);hscore vscore$=STR$(vscore):hscore$=STR$(hscore) SAY TRANSLATE$("SUDDEN DETH GOAL. FYNAL SCORE, IN OVERTIME ."+tm$(T1)+vscore$+","+tm$(T2)+hscore$+".") PRINT "SAVES: ";g$(T1);" (";tm$(T1);") ";vsave PRINT " ";g$(T2);" (";tm$(T2);") ";hsave OBJECT.OFF GOTO AnotherGame AnotherGame: GOSUB Delay COLOR 3,2:LOCATE 7,10:PRINT " ":LOCATE 7,31:PRINT " " HomePen=0:VisPen=0:hpmins=0:hpsecs=0:vpmins=0:vpsecs=0 LOCATE 21,1:COLOR 2,0:PRINT "Play Again? (Y/N) " a$=INKEY$:IF UCASE$(a$)="Y" THEN Initialize IF UCASE$(a$)<>"N" THEN AnotherGame GOTO recoup END Teams: DATA 1,WASHINGTON,WASHINGTUN,CAPITALS,CAPITAL CENTRE,PEETERS,PEETERS," MASON",MASON,107,2,MONTREAL,MONTREEALL,CANADIENS,THE MONTREAL FORUM," ROY ",RUAW,HAYWARD,HAYWERD,87 DATA 3,EDMONTON,EDMUNTUN,OILERS,NORTHLANDS COLISEUM," FUHR ",FIUR," MOOG ",MOOG,119,4,CHICAGO,SHICKAHGO,BLACKHAWKS,CHICAGO STADIUM,BANNERMAN,BANNERMAN,SAUVE,SAWVAY,86 DATA 5,NEW YORK,NEW YORK,ISLANDERS,NASSAU COLISEUM,HRUDEY,HRUDY,SMITH,SMITH,90,6,QUEBEC,QUEBEC,NORDIQUES,COLISEE de QUEBEC,MALARCHUK,MALARCHUK,GOSSELIN,GOSSELIN,92 DATA 7,CALGARY,CALGHERY,FLAMES,THE OLYMPIC SADDLEDOME,VERNON,VERNON,LEMELIN,LEMELIN,89,8,TORONTO,TORRONTOE,MAPLE LEAFS,MAPLE LEAF GARDENS,WREGGET,REGGET,BESTER,BESTER,57 DATA 9,PITTSBURGH,PITTSBURGH,PENGUINS,CIVIC ARENA,ROMANO,"RO MAHNO",MELOCHE,MELLOWSH,76,10,BOSTON,BOSTON,BRUINS,BOSTON GARDEN,RANFORD,RANFORD,KEANS,KEENS,86 DATA 11,WINNIPEG,WINNIPEG,JETS,WINNIPEG ARENA,REDDICK,REDDICK,PENNEY,PENNEY,59,12,DETROIT,DETROIT,RED WINGS,JOE LOUIS ARENA,STEFAN,STEFFIN,HANLON,HANLON,40 DATA 13,PHILADELPHIA,PHILADELPHIA,FLYERS,THE SPECTRUM,HEXTALL,HEXTALL,RESCH,RESH,110,14,BUFFALO,BUFFUHLOE,SABRES,MEMORIAL AUDITORIUM,BARASSO,BUHRAHSO,CLOUTIER,KLOTEEAY,80 DATA 15,VANCOUVER,VANKOOVER,CANUCKS,PACIFIC COLISEUM,BRODEUR,"BRO DIUR",YOUNG,YUNG,59,16,MINNESOTA,MINNUHSOTA,NORTH STARS,MET CENTER,BEAUPRE,"BO PRAY",TAKKO,TAKKO,85 DATA 17,NEW YORK,NEW YORK,RANGERS,MADISON SQUARE GARDEN,VANBIESBROUCK,VANBIESBROOK,FROESE,FROSE,78,18,HARTFORD,HARTFERD,WHALERS,THE HARTFORD CIVIC CENTER," LIUT",LEEOOT,WEEKS,WEEKS,84 DATA 19,LOS ANGELES,LOS ANJELLIS,KINGS,THE LOS ANGELES FORUM,ELIOT,ELLIOT,MELANSON,MELAHNSON,54,20,ST. LOUIS,SAINT LEWIS,BLUES,ST. LOUIS ARENA,WAMSLEY,WAHMSLEY,MILLEN,MILLEN,83 DATA 21,NEW JERSEY,NEW JERSEY,DEVILS,THE MEADOWLANDS ARENA,CHEVRIER,SHEVREEAY,TERRERI,TERRERI,59