home *** CD-ROM | disk | FTP | other *** search
- 10 KEY OFF:CLS
- 20 SCREEN 0
- 30 WIDTH 40
- 40 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
- 50 PRINT"░┌───────────────────────────────────┐░"
- 60 PRINT"░│ │░"
- 70 PRINT"░│ 2064-A.BAS │░"
- 80 PRINT"░│ RACECAR │░"
- 90 PRINT"░│ │░"
- 100 PRINT"░│ │░"
- 110 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF │░"
- 120 PRINT"░│ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ │░"
- 130 PRINT"░│ █ █ █ █ █ █ │░"
- 140 PRINT"░│ █ █▄▄▄█ █ █ █ │░"
- 150 PRINT"░│ █ █ █ █ █ │░"
- 160 PRINT"░│ ▄▄█▄▄ █ █▄▄▄▄ █▄▄▄█ │░"
- 170 PRINT"░│ │░"
- 180 PRINT"░│ International PC Owners │░"
- 190 PRINT"░│ │░"
- 200 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
- 210 PRINT"░│ │░"
- 220 PRINT"░└───────────────────────────────────┘░"
- 230 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
- 240 PRINT
- 250 PRINT " PRESS ANY KEY TO CONTINUE
- 260 A$=INKEY$: IF A$="" THEN 260
- 270 WIDTH 80
- 280 CLS
- 1000 REM -- RACE CARS - Program by D. R. QUIGGIN
- 1005 KEY OFF
- 1010 SCREEN 0:CLS
- 1020 LOCATE 12,35,0:COLOR 31: PRINT "PROGRAM LOADING"
- 1030 GOSUB 2480 'initialize - load arrays
- 1040 COLOR 7:CLS
- 1050 WIDTH 80
- 1060 LOCATE 2,5: PRINT " In the following game you race against the computer. The"
- 1070 LOCATE 3,5: PRINT "computer is the reigning champ, it is rather easy to tell because"
- 1080 LOCATE 4,5: PRINT "his is the smiling face - ";CHR$(2)"."
- 1090 LOCATE 6,5: PRINT " If you wish to race the computer, you can control the"
- 1100 LOCATE 7,5: PRINT "speed of your car by pressing the M key to go faster and"
- 1110 LOCATE 8,5: PRINT "the N key to go slower. Note, for best results tap the"
- 1120 LOCATE 9,5: PRINT "desired key and release it. Holding the key down can result"
- 1130 LOCATE 10,5: PRINT "in over speeding or over braking."
- 1140 LOCATE 11,5: PRINT " Of course as in any car, if you enter a corner too fast"
- 1150 LOCATE 12,5:PRINT "you risk a crash (and starting over at a slower speed)."
- 1160 LOCATE 13,5: PRINT " If you are unsure of how the game works you may"
- 1170 LOCATE 14,5: PRINT "want to view the demonstration first."
- 1180 RACESW=0
- 1190 LOCATE 16,5,0: PRINT "RACE DIFFICULTY"
- 1200 LOCATE 18,10,0: PRINT "0 - DEMONSTRATION RACE"
- 1210 LOCATE 19,10,0: PRINT "1 - EASIER RACE AGAINST THE COMPUTER"
- 1220 LOCATE 20,10,0: PRINT "2 - MORE DIFFICULT RACE "
- 1230 LOCATE 21,10,0: PRINT "3 - MOST DIFFICULT RACE "
- 1240 LOCATE 23,14,0: INPUT "Enter choice";RACESW
- 1250 IF RACESW>=0 AND RACESW<4 THEN GOTO 1290 'valid value entered
- 1260 LOCATE 22,14: PRINT "Error, you must enter 0,1,2 or 3."
- 1270 LOCATE 23,1,0: PRINT SPC(79)
- 1280 GOTO 1240
- 1290 WIDTH 40
- 1300 CLS
- 1310 GOSUB 1870 'draw racetrack
- 1320 LOCATE 22,10,0: PRINT CHR$(2)
- 1330 LOCATE 20,10: PRINT CHR$(196)
- 1340 IF RACESW=0 THEN GOTO 1440 'demo only
- 1350 IF RACESW=2 OR RACESW=3 THEN GOTO 1400 'print more difficult speeds
- 1360 LOCATE 1,1,0:PRINT " Maximum safe speeds are:"
- 1370 LOCATE 2,1,0:PRINT " 45 degree corner -";(10-2)*20;" mph."
- 1380 LOCATE 3,1,0:PRINT " 90 degree corner -";(10-3)*20;" mph."
- 1390 GOTO 1460
- 1400 LOCATE 1,1,0:PRINT " Maximum safe speeds are:"
- 1410 LOCATE 2,1,0:PRINT " 45 degree corner -";(10-3)*20;" mph."
- 1420 LOCATE 3,1,0:PRINT " 90 degree corner -";(10-4)*20;" mph."
- 1430 GOTO 1460
- 1440 LOCATE 2,13: PRINT "PERSONAL COMPUTER"
- 1450 LOCATE 3,13: PRINT " RACEWAY "
- 1460 SPEEDMAX=7
- 1470 BSPEED=3 'Set initial speed, every 3rd time thru while loop,move car
- 1480 ASPEED=3 'Set initial speed, every 3th time thru while loop,move car
- 1490 ACNTR=0
- 1500 BCNTR=0
- 1510 RACE=0
- 1520 A=1 'Initialize car A position subscript
- 1530 B=1 'Initialize car B position subscript
- 1540 LOCATE 5,1: PRINT " Press M to start"
- 1550 MN$=INKEY$: IF MN$<>"M" AND MN$<>"m" THEN GOTO 1550 'delay to get ready
- 1560 LOCATE 5,1: PRINT " "
- 1570 REM -- START RACE --
- 1580 WHILE RACE><1
- 1590 ACNTR=ACNTR+1
- 1600 IF ACNTR>ASPEED THEN ACNTR=1
- 1610 IF ACNTR=1 THEN GOSUB 2120 'erase & redraw car A
- 1620 IF A>85 THEN RACE=1 'A car finished
- 1630 REM
- 1640 BCNTR=BCNTR+1
- 1650 IF BCNTR>BSPEED THEN BCNTR=1
- 1660 IF BCNTR=1 THEN GOSUB 2410 'erase & redraw car B
- 1670 IF B>85 THEN RACE=1 'B car finished
- 1680 WEND '---------------------------------------------------------
- 1690 IF A>B GOTO 1740
- 1700 IF B>A GOTO 1770
- 1710 LOCATE 5,10: PRINT SPC(28)
- 1720 LOCATE 5,19: PRINT "TIE!"
- 1730 GOTO 1790
- 1740 LOCATE 5,10: PRINT SPC(28)
- 1750 LOCATE 5,11: PRINT "NICE DRIVING, YOU WIN!"
- 1760 GOTO 1790
- 1770 LOCATE 5,10: PRINT SPC(28)
- 1780 LOCATE 5,13: PRINT "THE COMPUTER WINS!"
- 1790 REM -----------------------------------end---
- 1800 FOR M=1 TO 800:NEXT M 'delay only *****************
- 1810 DUMMY$=INKEY$:IF DUMMY$<>"" GOTO 1810 '********** 2-12-83
- 1820 LOCATE 24,2: INPUT "PLAY AGAIN? (Enter y or n)";YN$
- 1830 YN1$=LEFT$(YN$,1)
- 1840 IF YN1$="Y" OR YN1$="y" THEN GOTO 1040 'to start over
- 1850 WIDTH 80:CLS:END '******************* end ****************
- 1860 REM
- 1870 REM Draw racecourse subroutine --------
- 1880 LOCATE 23,3: PRINT CHR$(200)+STRING$(12,205)+STRING$(10,32)+STRING$(12,205)+ CHR$(188)
- 1890 LOCATE 22,3: PRINT CHR$(186);SPC(12);CHR$(47);SPC(8);CHR$(92);SPC(12); CHR$(186)
- 1900 LOCATE 21,3: PRINT CHR$(186);SPC(1);CHR$(192);STRING$(9,196);SPC(2);CHR$(47);SPC(6);CHR$(92);SPC(2);STRING$(9,196);CHR$(217);SPC(1);CHR$(186)
- 1910 LOCATE 20,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(10);CHR$(47);SPC(1);CHR$(47);SPC(4);CHR$(92);SPC(1);CHR$(92);SPC(10);CHR$(179);SPC(1);CHR$(186)
- 1920 LOCATE 19,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(1);CHR$(200);STRING$(7,205);SPC(2);CHR$(47);SPC(1);CHR$(47);SPC(2);CHR$(92);SPC(1);CHR$(92);SPC(2);STRING$(7,205);CHR$(188);SPC(1);CHR$(179);SPC(1);CHR$(186)
- 1930 LOCATE 18,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(1)CHR$(186);SPC(8);CHR$(47);SPC(1);CHR$(47);SPC(1);CHR$(47);CHR$(92);SPC(1);CHR$(92);SPC(1);CHR$(92);SPC(8);CHR$(186);SPC(1);CHR$(179);SPC(1);CHR$(186)
- 1940 LOCATE 17,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(1)CHR$(186);SPC(9);CHR$(47);SPC(1);CHR$(47);SPC(1);CHR$(47);CHR$(92);SPC(1);CHR$(92);SPC(9);CHR$(186);SPC(1);CHR$(179);SPC(1);CHR$(186)
- 1950 LOCATE 16,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(1)CHR$(186);SPC(10);CHR$(47);SPC(1);CHR$(47);SPC(1);CHR$(47);CHR$(92);SPC(10);CHR$(186);SPC(1);CHR$(179);SPC(1);CHR$(186)
- 1960 LOCATE 15,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(1)CHR$(186);SPC(10);CHR$(92);CHR$(47);SPC(1);CHR$(47);SPC(1);CHR$(47);SPC(10);CHR$(186);SPC(1);CHR$(179);SPC(1);CHR$(186)
- 1970 LOCATE 14,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(1)CHR$(186);SPC(9);CHR$(92);SPC(1);CHR$(92);CHR$(47);SPC(1);CHR$(47);SPC(1);CHR$(47);SPC(9);CHR$(186);SPC(1);CHR$(179);SPC(1);CHR$(186)
- 1980 LOCATE 13,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(1)CHR$(186);SPC(8);CHR$(92);SPC(1);CHR$(92);SPC(1);CHR$(92);CHR$(47);SPC(1);CHR$(47);SPC(1);CHR$(47);SPC(8);CHR$(186);SPC(1);CHR$(179);SPC(1);CHR$(186)
- 1990 LOCATE 12,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(1);CHR$(201);STRING$(7,205);SPC(2);CHR$(92);SPC(1);CHR$(92);SPC(2);CHR$(47);SPC(1);CHR$(47);SPC(2);STRING$(7,205);CHR$(187);SPC(1);CHR$(179);SPC(1);CHR$(186)
- 2000 LOCATE 11,3: PRINT CHR$(186);SPC(1);CHR$(179);SPC(10);CHR$(92);SPC(1);CHR$(92);SPC(4);CHR$(47);SPC(1);CHR$(47);SPC(10);CHR$(179);SPC(1);CHR$(186)
- 2010 LOCATE 10,3: PRINT CHR$(186);SPC(1);CHR$(218);STRING$(9,196);SPC(2);CHR$(92);SPC(6);CHR$(47);SPC(2);STRING$(9,196);CHR$(191);SPC(1);CHR$(186)
- 2020 LOCATE 9,3: PRINT CHR$(186);SPC(12);CHR$(92);SPC(8);CHR$(47);SPC(12); CHR$(186)
- 2030 LOCATE 8,3: PRINT CHR$(201)+STRING$(12,205)+STRING$(10,32)+STRING$(12,205)+ CHR$(187)
- 2040 LOCATE 18,11:PRINT CHR$(179)
- 2050 LOCATE 19,11:PRINT CHR$(216) 'DRAW START/FINISH LINE
- 2060 LOCATE 20,11:PRINT CHR$(179)
- 2070 LOCATE 21,11:PRINT CHR$(197)
- 2080 LOCATE 22,11:PRINT CHR$(179)
- 2090 LOCATE 23,11:PRINT CHR$(216)
- 2100 RETURN '-----------------------------------------------------------------
- 2110 REM
- 2120 REM ------------------------- Move car A subroutine --------------------
- 2130 IF RACESW=0 THEN GOTO 2200 'ie. not a race, demo only
- 2140 GASBRK$=INKEY$ 'sense if key hit & load it into gasbrk$
- 2150 IF GASBRK$><"M" AND GASBRK$><"m" THEN GOTO 2180 'fall thru is m
- 2160 IF ASPEED>1 THEN ASPEED=ASPEED - 1 'increase speed for car A
- 2170 REM
- 2180 IF GASBRK$><"N" AND GASBRK$><"n" THEN GOTO 2200 'fall thru is n
- 2190 IF ASPEED<10 THEN ASPEED=ASPEED + 1 'decrease speed for car A
- 2200 LOCATE 5,12: PRINT "SPEED =";(10-ASPEED)* 20
- 2210 REM LOCATE 5,35: PRINT ASPEED '******************** FOR TESTING
- 2220 LOCATE AROW(A),ACOL(A),0: IF (A><57)AND(A><58)AND(A><59) THEN PRINT " "
- 2230 A=A + 1 'index for car A position
- 2240 IF RACESW=0 THEN GOTO 2280 'If demo don't check for crash
- 2250 IF RACESW=1 AND ASPEED<ACRASHE(A) THEN GOSUB 2300 'Too fast thru corner note-low is fast - this is for easier race
- 2260 IF RACESW=2 AND ASPEED<ACRASHD(A) THEN GOSUB 2300 'Too fast thru corner note-low is fast - this is for harder race
- 2270 IF RACESW=3 AND ASPEED<ACRASHD(A) THEN GOSUB 2300 'Too fast thru corner
- 2280 LOCATE AROW(A),ACOL(A): PRINT CHR$(AFIGR(A))
- 2290 RETURN '-------------------------------------------------
- 2300 REM ------------- CRASH SUBROUTINE -------------------------------------
- 2310 BEEP
- 2320 ASPEED=5 'Reset speed to slow - note, higher nbr,lower the speed
- 2330 FOR I=1 TO 4
- 2340 LOCATE AROW(A),ACOL(A): PRINT CHR$(179)
- 2350 LOCATE AROW(A),ACOL(A): PRINT CHR$(47)
- 2360 LOCATE AROW(A),ACOL(A): PRINT CHR$(196)
- 2370 LOCATE AROW(A),ACOL(A): PRINT CHR$(92)
- 2380 NEXT I
- 2390 RETURN ' ----------------------------------------------------------------
- 2400 REM
- 2410 REM ------------------------- Move car B subroutine --------------------
- 2420 LOCATE BROW(B),BCOL(B): IF (B><48)AND(B><49)AND(B><50) THEN PRINT " "
- 2430 B=B + 1 'index for car B position
- 2440 LOCATE BROW(B),BCOL(B): PRINT CHR$(BFIGR(B))
- 2450 IF RACESW=3 THEN BSPEED=BSPD(B) 'set speed from data for car B
- 2460 RETURN '-------------------------------------------------
- 2470 REM
- 2480 REM ------- Load car position arrays subroutine --------------------
- 2490 DIM ASPOT 'car position for car A, for ease of use in changing data only
- 2500 DIM AROW(86) 'row used in locate for car A
- 2510 DIM ACOL(86) 'column used in locate for car A
- 2520 DIM AFIGR(86) ' image to be used for car A, 0-255
- 2530 DIM ACRASHD(86) 'More Difficult crash speed, used on corners ie if exceed then crash
- 2540 DIM ACRASHE(86) 'Easeier crash speed, used on corners ie if exceed then crash
- 2550 DIM FILL 'Not used - only to separate A data from B data in data stmt
- 2560 DIM BROW(86) 'row used in locate for car B
- 2570 DIM BCOL(86) 'column used in locate for car B
- 2580 DIM BFIGR(86) ' image to be used for car B
- 2590 DIM BSPD(86) 'speed for computer car on difficulty 3
- 2600 FOR I=1 TO 86
- 2610 READ ASPOT,AROW(I),ACOL(I),AFIGR(I),ACRASHD(I),ACRASHE(I),FILL$,BROW(I),BCOL(I),BFIGR(I),BSPD(I)
- 2620 NEXT I
- 2630 RETURN '-----------------------------------------------------------------
- 2640 REM
- 2650 REM -CHALLENGERS- -COMPUTER--
- 2660 REM ----CAR A---- ---CAR B---
- 2670 DATA 01,20,10,196,1,1,*,22,10,002,2
- 2680 DATA 02,20,11,196,1,1,*,22,11,002,2
- 2690 DATA 03,20,12,196,1,1,*,22,12,002,2
- 2700 DATA 04,20,13,196,1,1,*,22,13,002,2
- 2710 DATA 05,20,14,196,1,1,*,22,14,002,2
- 2720 DATA 06,20,15,196,1,1,*,22,15,002,2
- 2730 DATA 07,19,16,047,3,2,*,21,16,002,3
- 2740 DATA 08,18,17,047,1,1,*,20,17,002,2
- 2750 DATA 09,17,18,047,1,1,*,19,18,002,2
- 2760 DATA 10,16,19,047,1,1,*,18,19,002,2
- 2770 DATA 11,15,20,047,1,1,*,17,20,002,2
- 2780 DATA 12,14,21,047,1,1,*,16,21,002,2
- 2790 DATA 13,13,22,047,1,1,*,15,22,002,2
- 2800 DATA 14,12,23,047,1,1,*,14,23,002,2
- 2810 DATA 15,11,24,047,1,1,*,13,24,002,2
- 2820 DATA 16,10,25,047,1,1,*,12,25,002,2
- 2830 DATA 17,09,26,196,3,2,*,11,26,002,3
- 2840 DATA 18,09,27,196,1,1,*,11,27,002,2
- 2850 DATA 19,09,28,196,1,1,*,11,28,002,2
- 2860 DATA 20,09,29,196,1,1,*,11,29,002,2
- 2870 DATA 21,09,30,196,1,1,*,11,30,002,2
- 2880 DATA 22,09,31,196,1,1,*,11,31,002,2
- 2890 DATA 23,09,32,196,1,1,*,11,32,002,2
- 2900 DATA 24,09,33,196,1,1,*,11,33,002,2
- 2910 DATA 25,09,34,196,1,1,*,11,34,002,2
- 2920 DATA 26,09,35,196,1,1,*,11,35,002,2
- 2930 DATA 27,09,36,196,1,1,*,12,35,002,2
- 2940 DATA 28,09,37,092,4,3,*,13,35,002,4
- 2950 DATA 29,10,37,179,1,1,*,14,35,002,2
- 2960 DATA 30,11,37,179,1,1,*,15,35,002,2
- 2970 DATA 31,12,37,179,1,1,*,16,35,002,2
- 2980 DATA 32,13,37,179,1,1,*,17,35,002,2
- 2990 DATA 33,14,37,179,1,1,*,18,35,002,2
- 3000 DATA 34,15,37,179,1,1,*,19,35,002,2
- 3010 DATA 35,16,37,179,1,1,*,20,35,002,2
- 3020 DATA 36,17,37,179,1,1,*,20,34,002,2
- 3030 DATA 37,18,37,179,1,1,*,20,33,002,2
- 3040 DATA 38,19,37,179,1,1,*,20,32,002,2
- 3050 DATA 39,20,37,179,1,1,*,20,31,002,2
- 3060 DATA 40,21,37,179,1,1,*,20,30,002,2
- 3070 DATA 41,22,37,047,4,3,*,20,29,002,4
- 3080 DATA 42,22,36,196,1,1,*,20,28,002,2
- 3090 DATA 43,22,35,196,1,1,*,20,27,002,2
- 3100 DATA 44,22,34,196,1,1,*,20,26,002,2
- 3110 DATA 45,22,33,196,1,1,*,19,25,002,2
- 3120 DATA 46,22,32,196,1,1,*,18,24,002,2
- 3130 DATA 47,22,31,196,1,1,*,17,23,002,2
- 3140 DATA 48,22,30,196,1,1,*,16,22,047,2
- 3150 DATA 49,22,29,196,1,1,*,15,21,047,2
- 3160 DATA 50,22,28,196,1,1,*,14,20,047,2
- 3170 DATA 51,22,27,196,1,1,*,13,19,002,2
- 3180 DATA 52,22,26,196,1,1,*,12,18,002,2
- 3190 DATA 53,21,25,092,3,2,*,11,17,002,3
- 3200 DATA 54,20,24,092,1,1,*,10,16,002,2
- 3210 DATA 55,19,23,092,1,1,*,09,15,002,2
- 3220 DATA 56,18,22,092,1,1,*,09,14,002,2
- 3230 DATA 57,17,21,047,1,1,*,09,13,002,2
- 3240 DATA 58,16,20,047,1,1,*,09,12,002,2
- 3250 DATA 59,15,19,047,1,1,*,09,11,002,2
- 3260 DATA 60,14,18,092,1,1,*,09,10,002,2
- 3270 DATA 61,13,17,092,1,1,*,09,09,002,2
- 3280 DATA 62,12,16,092,1,1,*,09,08,002,2
- 3290 DATA 63,11,15,196,3,2,*,09,07,002,2
- 3300 DATA 64,11,14,196,1,1,*,09,06,002,2
- 3310 DATA 65,11,13,196,1,1,*,09,05,002,2
- 3320 DATA 66,11,12,196,1,1,*,09,04,002,2
- 3330 DATA 67,11,11,196,1,1,*,10,04,002,2
- 3340 DATA 68,11,10,196,1,1,*,11,04,002,2
- 3350 DATA 69,11,09,196,1,1,*,12,04,002,2
- 3360 DATA 70,11,08,196,1,1,*,13,04,002,2
- 3370 DATA 71,11,07,196,1,1,*,14,04,002,2
- 3380 DATA 72,11,06,047,4,3,*,15,04,002,2
- 3390 DATA 73,12,06,179,1,1,*,16,04,002,2
- 3400 DATA 74,13,06,179,1,1,*,17,04,002,2
- 3410 DATA 75,14,06,179,1,1,*,18,04,002,2
- 3420 DATA 76,15,06,179,1,1,*,19,04,002,2
- 3430 DATA 77,16,06,179,1,1,*,20,04,002,2
- 3440 DATA 78,17,06,179,1,1,*,21,04,002,2
- 3450 DATA 79,18,06,179,1,1,*,22,04,002,2
- 3460 DATA 80,19,06,179,1,1,*,22,05,002,2
- 3470 DATA 81,20,06,092,4,3,*,22,06,002,2
- 3480 DATA 82,20,07,196,1,1,*,22,07,002,2
- 3490 DATA 83,20,08,196,1,1,*,22,08,002,2
- 3500 DATA 84,20,09,196,1,1,*,22,09,002,2
- 3510 DATA 85,20,10,196,1,1,*,22,10,002,2
- 3520 DATA 86,20,11,196,1,1,*,22,11,002,2
- 3500 DATA 84,20,09,196,1,1,*,22,0