10 REM SLALM.ECB 100 REM SLALOM *** (BASIC PROGRAM BEGINS AT LINE 290) WAS 110 REM WRITTEN BY J. PANEK OF ST. PAUL"S SCHOOL "77 120 REM LAST CHANGE 8 MAR 73 BY J. PANEK 130 REM 140 REM DESCRIPTION--SIMULATES AN "N" GATED SLALOM COURSE WHERE "N" IS LESS 150 REM THAN 26 AND GREATER THAN 0. THE USER HAS SEMI-CONTROL OVER HIS 160 REM SPEED. HE HAS THE OPTION OF FINDING THE MAXIMUM GATE SPEEDS AT 170 REM THE BEGINNING OF THE RUN, OR HE CAN RUN IT "BLIND". 180 REM 190 REM INSTRUCTIONS--TYPE "RUN" AND WHEN THE PROGRAM ASKS "HOW MANY 200 REM GATES DOES THIS COURSE HAVE?", TYPE IN A NUMBER FROM 1 TO 210 REM 25. THE PROGRAM WILL THEN ASK IF YOU WANT INSTRUCTIONS. 220 REM 270 PRINT "&K&J&J" 275 REMDESCRIPTION OF CHANGES-- 276 REM 8 MAR 73 ADDED SEVERAL SPEED OPTIONS 277 REM 280 REM * * * * * * * * * * * * * * * * * * * * * 300 REM 306 PRINT TAB(20);"S L A L O M" 307 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 "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 "THE STARTER COUNTS DOWN...5...4...3...2...1...GO! " 490 RESTORE 500 LET T=0 510 LET R1=RND(0) 515 LET S=INT(R1*(18-9)+9) 520 PRINT " YOU'RE OFF!" 530 LET O=1 540 READ Q 550 PRINT " HERE COMES GATE #";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 LET O=O+1 675 IF O<=V GOTO 540 680 LET R1=RND(0) 685 PRINT "YOU TOOK";(T+R1);"SECONDS" 690 LET M=T 700 LET M=M/V 710 IF M<1.5-(A*0.1) THEN 1650 720 IF M<2.9-(A*0.1) THEN 1680 730 IF M<4.4-(A*.01) THEN 1710 740 PRINT "DO YOU WANT TO RACE AGAIN"; 750 INPUT B$ 760 LET B$=B$(1,1) 770 IF B$(1,1)="N" THEN 1740 780 IF B$(1,1)="Y" THEN 480 790 PRINT "PLEASE TYPE 'YES' OR 'NO'" 800 GOTO 740 810 STOP 820 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 " 0--TYPE THIS IF 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 " THE PLACE TO USE THESE OPTIONS IS WHEN THE COMPUTER ASKS:" 940 PRINT " OPTION?" 950 PRINT " GOOD LUCK, " 960 GOTO 1470 970 LET R1=RND(0) 975 PRINT "YOU'VE TAKEN ";(T+R1);" SECONDS." 980 GOTO 580 990 ON O1 GOTO 1130,1010,1170,1080,1190,1100,1150,1210 1000 STOP 1010 LET R1=RND(0) 1015 LET S=S+INT(R1*(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 R1=RND(0) 1105 LET S=S-INT(R1*(5-3)+3) 1110 PRINT S;"M.P.H." 1120 GOTO 1030 1130 LET R1=RND(0) 1135 LET S=S+INT(R1*(10-5)+5) 1140 GOTO 1080 1150 LET R1=RND(0) 1155 LET S=S-INT(R1*(10-5)+5) 1160 GOTO 1110 1170 LET R1=RND(0) 1175 LET S=S+INT(R1*(4-1)+1) 1180 GOTO 1110 1190 LET R1=RND(0) 1195 LET S=S-INT(R1*(4-1)+1) 1200 GOTO 1110 1210 PRINT "***CHEAT " 1220 LET R1=RND(0) 1225 IF R1<.7 THEN 1260 1230 PRINT "YOU MADE IT! " 1240 LET T=T+1.5 1250 RETURN 1260 PRINT "AN OFFICIAL CAUGHT YOU!" 1270 LET R1=RND(0) 1275 PRINT "YOU TOOK";(T+R1);"SECONDS" 1280 GOTO 740 1290 LET R1=RND(0) 1295 IF R1<((S-Q)*0.1)+.2 THEN 1320 1300 PRINT "YOU TOOK OVER MAX. SPEED AND MADE IT!" 1310 RETURN 1320 PRINT "YOU TOOK OVER MAX. SPEED AND "; 1330 LET R1=RND(0) 1335 IF R1<.5 THEN 1370 1340 PRINT "WIPED OUT!" 1350 LET R1=RND(0) 1355 PRINT "YOU TOOK ";(T+R1);" 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 "TYPE 'INS' FOR INSTRUCTIONS" 1450 PRINT "TYPE 'MAX' FOR APPROXIMATE MAXIMUM SPEEDS" 1460 PRINT "TYPE 'RUN' FOR THE BEGINNING OF THE RACE" 1470 PRINT "COMMAND--"; 1480 INPUT A$ 1490 IF LEN(A$)>2 THEN LET A$=A$(1,3) 1500 IF A$="INS" THEN 820 1510 IF A$="MAX" THEN 1550 1520 IF A$="RUN" THEN 410 1530 PRINT "'";A$;"' 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 1830 END