10 ON KEY# 1,"SET UP" GOSUB 1740
20 ON KEY# 5," HELP " GOSUB 1760
30 ON KEY# 2 GOSUB 1560
40 ON KEY# 4 GOSUB 1540
50 ON KEY# 8 GOSUB 1580
60 ON KEY# 3 GOSUB 1520
70 LDIR 0 @ CLEAR @ KEY LABEL @ DISP "SKI GAME"
80 DIM F(10,2),G(10,2),M(10),P$[10]
90 V9=-1
100 F=0
110 IF NOT F THEN 110
120 IF F=1 THEN 1600
130 V9=-1
140 W=0 @ B=1 @ CLEAR @ DISP "ENTER BACKGROUND COLOR:0=W, 1=B";
150 INPUT V8
160 SCALE 0,255,0,191
170 IF V8 THEN V9=1
180 DISP "ENTER COURSE CODE"
190 INPUT S1
200 DISP "WHAT'S YOUR ABILITY:1 TO 5      (1 IS EASY,5 IS HARD)"
210 INPUT Q
220 IF Q<1 THEN 200
230 RANDOMIZE S1*.6142332571
240 PEN V9 @ GCLEAR @ MOVE 6,180 @ LABEL "HP 85 SKI GAME"
250 G=1
260 MOVE 210,182 @ LABEL "S"
270 MOVE 227,182 @ LABEL "S"
280 X=196 @ Y=170
290 F(G,1)=INT(X) @ F(G,2)=INT(Y)
300 MOVE INT(X),INT(Y)
310 GOSUB 1780
320 IF RND<=.5 THEN 380
330 X,G(G,1)=INT(F(G,1)+13)
340 G(G,2)=INT(Y)
350 MOVE INT(X),INT(Y)
360 GOSUB 1820
370 GOTO 400
380 G(G,1)=INT(X) @ Y,G(G,2)=INT(Y-13)
390 GOTO 350
400 IF RND>.5 THEN 440
410 X=218+RND*16-30*G
420 Y=Y-13-RND*19
430 GOTO 460
440 X=218-RND*16-30*G
450 GOTO 420
460 IF Y<35 THEN 490
470 G=G+1
480 GOTO 290
490 X=F(G,1)-8 @ G=G+1
500 F(G,1)=X @ G(G,1)=X+17
510 Y,F(G,2),G(G,2)=18
520 MOVE X-16,10 @ LABEL "FINISH"
530 MOVE X,18
540 GOSUB 1780
550 MOVE X+17,18
560 GOSUB 1820
570 MOVE 203,10 @ LABEL "REPEAT"
580 MOVE 73,0 @ LABEL "START    LEFT    RIGHT"
590 W=.001
600 P=190
610 A=.25+.1*Q @ V=1 @ D=190
620 C=218
630 FOR I=0 TO 10
640 M(I)=0
650 NEXT I
660 M1=1
670 X1=218 @ Y1=190 @ F=0
680 MOVE 8,131 @ LABEL "TIME:"
690 F=1
700 PEN -V9 @ MOVE 73,0 @ LABEL "START" @ BEEP 15,10
710 PEN V9 @ MOVE 73,0 @ LABEL "START" @ BEEP 25,20
720 IF F THEN 700
730 FOR I=-5 TO 0 STEP .1
740 BEEP 90-ABS(I*15),10
750 NEXT I
760 T=0
770 MOVE X1,Y1
780 B=TIME
790 MOVE 50,131 @ LABEL VAL$(T) @ MOVE X1,Y1
800 V=V+A/2 @ Y=V+A/4*P/190 @ X=W
810 IF F=0 THEN 870
820 W=W+3*A*F
830 F=0
840 V=V-(1.5-A)/2
850 IF V>.8 THEN 870
860 V=1 @ W=.75*W
870 IF W>V THEN X=.75*W
880 C=X1 @ D=Y1
890 C1,X1=X1+X @ D1,Y1=Y1-Y @ DRAW X1,Y1
900 C2=MIN(C,C1) @ C3=MAX(C,C1)
910 D2=MIN(D,D1) @ D3=MAX(D,D1)
920 M=M1
930 IF Y1<G(M,2) THEN M1=MIN(G,M+1)
940 S=-(Y/X*F(M,1))+D+Y*C/X
950 R=-(X/Y*(F(M,2)-D-Y*C/X))
960 IF (C2>R OR R>C3) AND F(M,2)=G(M,2) THEN 1190
970 IF (D2>S OR S>D3) AND F(M,1)=G(M,1) THEN 1190
980 IF F(M,2)=G(M,2) AND R>=F(M,1) AND G(M,1)>=R THEN 1010
990 IF F(M,1)>=G(M,1) AND F(M,2)>=S AND S>=G(M,2) THEN 1110
1000 GOTO 1190
1010 IF F(M,1)+1<R THEN 1060
1020 PEN -V9 @ MOVE F(M,1),F(M,2) @ GOSUB 1780
1030 PEN V9 @ MOVE F(M,1),F(M,2) @ IDRAW -17,0 @ IDRAW 3,-5 @ IDRAW 0,5
1040 MOVE X1,Y1
1050 BEEP 45,100 @ GOTO 1150
1060 IF R<G(M,1)-1 THEN 1150
1070 PEN -V9 @ MOVE G(M,1),G(M,2) @ GOSUB 1820
1080 PEN V9 @ MOVE G(M,1)+14,G(M,2) @ IDRAW 0,-5 @ IDRAW 3,5 @ IDRAW -17,0
1090 MOVE X1,Y1
1100 BEEP 10,200 @ GOTO 1150
1110 IF F(M,2)-1>S THEN 1130
1120 GOTO 1020
1130 IF S>G(M,2)+1 THEN 1150
1140 GOTO 1070
1150 M(M)=1
1160 FOR K=1 TO 15
1170 BEEP 75+K,5
1180 NEXT K
1190 T1=INT(TIME-B)
1200 IF T=T1 THEN 1240
1210 PEN -V9 @ MOVE 50,131 @ LABEL VAL$(T) @ PEN V9
1220 T=T1
1230 MOVE 50,131 @ LABEL VAL$(T) @ MOVE X1,Y1
1240 P=P-Y
1250 IF P>17 THEN 800
1260 DRAW X1+X,Y1-Y
1270 MOVE 8,142 @ LABEL "THAT'S THE RACE"
1280 PEN -V9 @ MOVE 50,131 @ LABEL VAL$(T) @ PEN V9
1290 T=TIME-B
1300 MOVE 50,131 @ LABEL VAL$(T)
1310 FOR I=1 TO G
1320 IF M(I)=1 THEN 1340
1330 MOVE G(I,1),G(I,2) @ LABEL "MISSED"
1340 NEXT I
1350 F1,F=1
1360 PEN -V9 @ MOVE 73,0 @ LABEL "START" @ BEEP 15,10
1370 PEN -V9 @ MOVE 203,10 @ LABEL "REPEAT" @ BEEP 40,15
1380 PEN V9 @ MOVE 73,0 @ LABEL "START" @ BEEP 25,20
1390 PEN V9 @ MOVE 203,10 @ LABEL "REPEAT" @ BEEP 12,25
1400 IF F THEN 1360
1410 IF F1=0 THEN 230
1420 ALPHA @ DISP "TRY AGAIN:YES/NO";
1430 INPUT P$[1,9]
1440 IF UPC$(P$[1,1])="N" THEN 1510
1450 IF UPC$(P$[1,1])#"Y" THEN BEEP @ GOTO 1420
1460 DISP "NEW COURSE:YES/NO";
1470 INPUT P$[1,9]
1480 IF UPC$(P$[1,1])="N" THEN 200
1490 IF UPC$(P$[1,1])#"Y" THEN BEEP @ GOTO 1460
1500 GOTO 130
1510 STOP
1520 F=F-1
1530 RETURN
1540 F=F+1
1550 RETURN
1560 F=0
1570 RETURN
1580 F1,F=0 @ BEEP 15,200
1590 RETURN
1600 CLEAR @ KEY LABEL @ DISP "            SKI GAME"
1610 DISP "K1:SET UP GAME CONDITIONS"
1620 DISP "K5:HELP"
1630 DISP "================================"
1640 DISP "EXPLANATION OF KEYS IN GRAPHICS:"
1650 DISP "START-PRESS TO START GAME OR TO"
1660 DISP " SET UP NEW COURSE"
1670 DISP "LEFT/RIGHT-CONTROL SKIER BY"
1680 DISP " HITTING DESIRED KEY"
1690 DISP "REPEAT-DUPLICATE COURSE"
1700 DISP "THE OBJECT OF GAME IS TO MAKE"
1710 DISP "EACH GATE IN LEAST TIME!"
1720 BEEP 10,200
1730 GOTO 100
1740 F=2
1750 RETURN
1760 F=1
1770 RETURN
1780 IDRAW -5,17
1790 IDRAW -4,-4
1800 IDRAW 4,0 @ PENUP
1810 RETURN
1820 IDRAW 5,17
1830 IDRAW 4,-4
1840 IDRAW -4,0 @ PENUP
1850 RETURN
