0 REM Modified by Jim Woolley, FOG Disk Librarian, 8/82
1 RANDOMIZE
5 PRINT CHR$(26):WIDTH 80
10 PRINT TAB(33);"SLALOM":PRINT
20 PRINT TAB(15);"CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY"
30 PRINT:PRINT:PRINT
310 PRINT "HOW MANY GATES DOES THIS COURSE HAVE (1 TO 25)";
320 INPUT V
330 IF V>25 THEN 360
340 IF V<1 THEN 390
350 GOTO 1440
360 PRINT "25 IS THE LIMIT."
370 LET V=25
380 GOTO 1440
390 PRINT "TRY AGAIN,"
400 GOTO 310
410 PRINT:PRINT "RATE YOURSELF AS A SKIER, (1=WORST, 3=BEST)";
420 INPUT A
430 IF A<1 THEN 460
440 IF A>3 THEN 460
450 GOTO 480
460 PRINT "THE BOUNDS ARE 1-3."
470 GOTO 410
480 PRINT:PRINT"THE STARTER COUNTS DOWN";
481 FOR I=5 TO 1 STEP -1:FOR J=1 TO 400:NEXT J
482 PRINT"...";:PRINT USING"#";I;:NEXT I
483 FOR J=1 TO 400:NEXT J
484 PRINT"...GO!"
490 REM
500 LET T=0
510 LET S=INT(RND(1)*(18-9)+9)
520 PRINT
525 PRINT "YOU'RE OFF!"
530 FOR O=1 TO V
540    READ Q
550 PRINT
555 PRINT "HERE COMES GATE #";STR$(O);":"
560    PRINT S;"M.P.H."
570    LET S1=S
580    PRINT "OPTION";
590    INPUT O1
600    IF O1=0 THEN 970
610   IF O1>8 THEN 1420
620    IF O1<1 THEN 1420
630    GOSUB 990
640    IF S<7 THEN 1390
650    LET T=T+(Q-S+1)
660    IF S>Q THEN 1630
670 NEXT O
680 PRINT:PRINT "YOU TOOK";(T+RND(1));"SECONDS."
690 LET M=T
700 LET M=M/V
710 IF M<1.5-(A*.1) THEN 1650
720 IF M<2.9-(A*.1) THEN 1680
730 IF M<4.4-(A*.01) THEN 1710
740 PRINT:PRINT "DO YOU WANT TO RACE AGAIN";
750 INPUT B$
760 REM
770 IF LEFT$(B$,1)="N" THEN 1740
780 IF LEFT$(B$,1)="Y" THEN 480
790 PRINT "PLEASE TYPE 'YES' OR 'NO'"
800 GOTO 740
810 RUN "MENU"
820 PRINT
825 PRINT "*** SLALOM: THIS IS THE 1976 WINTER OLYMPIC GIANT SLALOM.  YOU ARE"
830 PRINT "            THE AMERICAN TEAM'S ONLY HOPE OF A GOLD MEDAL."
840 PRINT
845 PRINT "     0 -- TYPE THIS IS YOU WANT TO SEE HOW LONG YOU'VE TAKEN."
850 PRINT "     1 -- TYPE THIS IF YOU WANT TO SPEED UP A LOT."
860 PRINT "     2 -- TYPE THIS IF YOU WANT TO SPEED UP A LITTLE."
870 PRINT "     3 -- TYPE THIS IF YOU WANT TO SPEED UP A TEENSY."
880 PRINT "     4 -- TYPE THIS IF YOU WANT TO KEEP GOING THE SAME SPEED."
890 PRINT "     5 -- TYPE THIS IF YOU WANT TO CHECK A TEENSY."
900 PRINT "     6 -- TYPE THIS IF YOU WANT TO CHECK A LITTLE."
910 PRINT "     7 -- TYPE THIS IF YOU WANT TO CHECK A LOT."
920 PRINT "     8 -- TYPE THIS IF YOU WANT TO CHEAT AND TRY TO SKIP A GATE."
930 PRINT
935 PRINT " THE PLACE TO USE THESE OPTIONS IS WHEN THE COMPUTER ASKS:"
940 PRINT
945 PRINT "OPTION?"
950 PRINT
955 PRINT "                GOOD LUCK!"
957 PRINT
960 GOTO 1470
970 PRINT "YOU'VE TAKEN";(T+RND(1));"SECONDS."
980 GOTO 580
990 ON O1 GOTO 1130,1010,1170,1080,1190,1100,1150,1210
1000 RUN "MENU"
1010 LET S=S+INT(RND(1)*(5-3)+3)
1020 PRINT S;"M.P.H."
1030 IF S>Q THEN 1290
1040 IF S>Q-1 THEN 1060
1050 RETURN
1060 PRINT "CLOSE ONE!"
1070 RETURN
1080 PRINT S;"M.P.H."
1090 GOTO 1030
1100 LET S=S-INT(RND(1)*(5-3)+3)
1110 PRINT S;"M.P.H."
1120 GOTO 1030
1130 LET S=S+INT(RND(1)*(10-5)+5)
1140 GOTO 1080
1150 LET S=S-INT(RND(1)*(10-5)+5)
1160 GOTO 1110
1170 LET S=S+INT(RND(1)*(4-1)+1)
1180 GOTO 1110
1190 LET S=S-INT(RND(1)*(4-1)+1)
1200 GOTO 1110
1210 PRINT "***  CHEAT  ***"
1220 IF RND(1)<.7 THEN 1260
1230 PRINT "YOU MADE IT!"
1240 LET T=T+1.5
1250 RETURN
1260 PRINT "AN OFFICIAL CAUGHT YOU!"
1270 PRINT "YOU TOOK";(T+RND(1));"SECONDS."
1280 GOTO 740
1290 IF RND(1)<((S-Q)*.1)+.2 THEN 1320
1300 PRINT "YOU WENT OVER THE NAXIMUM SPEED AND MADE IT!"
1310 RETURN
1320 PRINT "YOU WENT OVER THE MAXIMUM SPEED AND ";
1330 IF RND(1)<.5 THEN 1370
1340 PRINT "WIPED OUT!"
1350 PRINT "YOU TOOK";(T+RND(1));"SECONDS."
1360 GOTO 740
1370 PRINT "SNAGGED A FLAG!"
1380 GOTO 1350
1390 PRINT "LET'S BE REALISTIC, OK?  LET'S GO BACK AND TRY AGAIN..."
1400 LET S=S1
1410 GOTO 550
1420 PRINT "WHAT?"
1430 GOTO 580
1440 PRINT
1445 PRINT "TYPE ";CHR$(34);"INS";CHR$(34);" FOR INSTRUCTIONS"
1450 PRINT "TYPE ";CHR$(34);"MAX";CHR$(34);" FOR APPROXIMATE MAXIMUM SPEEDS"
1460 PRINT "TYPE ";CHR$(34);"RUN";CHR$(34);" FOR THE BEGINNING OF THE RACE"
1470 PRINT:PRINT "COMMAND--";
1480 INPUT A$
1490 REM
1500 IF LEFT$(A$,1)="I" THEN 820
1510 IF LEFT$(A$,1)="M" THEN 1550
1520 IF LEFT$(A$,1)="R" THEN 410
1530 PRINT CHR$(34);A$;CHR$(34);" IS AN ILLEGAL COMMAND--RETRY";
1540 GOTO 1480
1550 PRINT "GATE MAX"
1560 PRINT " #  M.P.H."
1570 PRINT"----------"
1580 FOR B=1 TO V
1590    READ Q
1600    PRINT B;"  ";Q
1610 NEXT B
1620 GOTO 1470
1630 LET T=T+.5
1640 GOTO 670
1650 PRINT "YOU WON A GOLD MEDAL!"
1660 LET G(1)=G(1)+1
1670 GOTO 1730
1680 PRINT "YOU WON A SILVER MEDAL."
1690 LET S(1)=S(1)+1
1700 GOTO 1730
1710 PRINT "YOU WON A BRONZE MEDAL."
1720 LET B(1)=B(1)+1
1730 GOTO 740
1740 PRINT "THANKS FOR THE RACE."
1750 IF G(1)<1 THEN 1770
1760 PRINT "GOLD MEDALS:";G(1)
1770 IF S(1)<1 THEN 1790
1780 PRINT "SILVER MEDALS:";S(1)
1790 IF B(1)<1 THEN 1830
1800 PRINT "BRONZE MEDALS:";B(1)
1810 DATA 14,18,26,29,18,25,28,32,29,20,29,29,25,21,26,29,20,21,20
1820 DATA 18,26,25,33,31,22
1830 RUN "MENU"
