Compucolor.org – Virtual Media

Listing of file='RTRACK.BAS;01' on disk='vmedia/word_puzzle-sector.ccvf'

10 PLOT 27,24:PLOT 12:PLOT 6,3
15 PLOT 14:PLOT 3,24,1:PRINT "VECTOR RACETRACK"
20 PLOT 3,0,5:PRINT "PRE RACE BRIEFING"
25 PLOT 15:PLOT 3,0,9
30 PRINT "1   THE RACE IS OF ONE LAP....LEFT HAND CIRCUIT"
35 PLOT 3,0,13
40 PRINT "2   A CAR MAKES ONE CHANGE TO ITS SPEED EACH TURN"
45 PLOT 3,0,17
50 PRINT "3   A COLLISION WITH A WALL WILL LOSE 2 TURNS"
55 PLOT 3,0,21
60 PRINT "4   A COLLISION WITH THE OTHER CAR WILL LOSE 2 TURNS"
65 PLOT 3,0,25
70 PRINT "5   THE LAP RECORD IS 44 TURNS....BEAT THAT!!!"
75 PLOT 14:PLOT 3,10,31:PRINT " PRESS...C...THEN RETURN TO CONTINUE"
80 PLOT 3,60,31:INPUT C$
85 IF C$= "C"THEN 200
90 PLOT 6,0:PLOT 3,60,31:PRINT "    "
100 PLOT 6,3:GOTO 80
200 DIM X(6),Y(6)
201 DIM M(2),T(2):REM  SUBROUTINE MODULII AND LINE PARAMETERS
202 DIM XR(2),YR(2):REM  CAR COORDINATES
203 DIM XC(2),YC(2):REM  VECTOR COMPONENTS
450 PLOT 3,26,12:PRINT "     ":PLOT 3,34,12:PRINT " "
455 PLOT 3,38,12:PRINT "     ":PLOT 3,44,12:PRINT " "
999 PLOT 27,24:PLOT 6,7:PLOT 12
1000 PLOT 2,1,3,242,126,3,126,84,50,84,50,124,1,124,1,3,255
1010 PLOT 2,14,20,242,113,20,113,67,37,67,37,103,14,103,14,20,255
1020 PLOT 3,32,1:REM  SET CURSOR
1030 PLOT 14:REM  SET LARGE LETTERS
1040 PLOT 6,28:REM  SET BG YELLOW FG BLUE
1050 PRINT "                  "
1051 PLOT 3,32,3
1052 PRINT " VECTOR RACETRACK "
1053 PLOT 3,32,5
1054 PRINT "                  "
1060 PLOT 3,8,17:PLOT 6,32:REM  SET CURSOR AND BG BLUE
1070 PLOT 14:
1080 PRINT " BLUE CAR "
1090 PLOT 3,47,17:PLOT 6,8
1100 PRINT " RED CAR "
1105 PLOT 15:REM  SMALL LETTERS
1110 PLOT 3,11,20:PLOT 29,20:PLOT 30,23
1120 PRINT "TURNS"
1130 PLOT 3,49,20:PLOT 29,17:PLOT 30,23
1140 PRINT "TURNS"
1990 TR= 0:TB= 0:REM  INITIALISE TURN COUNT
1995 SR= 1:SB= 1:REM  INITIALISE SECTOR POINTER
2000 J= PEEK (33209):REM  LOOK AT SECONDS
2010 IF J> = 30THEN 3000
2020 TF= 0:REM  FIRST TURN FLAG FOR BLUE
2030 XB(0)= 48:YB(0)= 15:XB(1)= 48:YB(1)= 15:REM  BLUE ON INSIDE
2035 PLOT 6,4:PLOT 2,XB(0),YB(0),255
2040 XR(0)= 48:YR(0)= 8:XR(1)= 48:YR(1)= 8:REM  RED ON OUTSIDE
2045 PLOT 6,1:PLOT 2,XR(0),YR(0),255
2047 GOTO 3030
3000 TF= 1:REM  FIRST TURN FLAG FOR RED
3010 XR(0)= 48:YR(0)= 15:XR(1)= 48:YR(1)= 15:REM  RED ON INSIDE
3015 PLOT 6,1:PLOT 2,XR(0),YR(0),255
3020 XB(0)= 48:YB(0)= 8:XB(1)= 48:YB(1)= 8:REM  BLUE ON OUTSIDE
3022 PLOT 6,4:PLOT 2,XB(0),YB(0),255
3030 PLOT 6,7:PLOT 2,50,4,242,50,19,255:REM  START LINE
3040 PLOT 6,2:PLOT 15:PLOT 3,23,25:PRINT "START"
3041 CH= 4
3043 PLOT 14:PLOT 6,4:PLOT 3,12,23:PRINT TB
3045 PLOT 14:PLOT 6,1:PLOT 3,50,23:PRINT TR
3050 IF TR< TBTHEN 3150
3060 IF TR> TBTHEN 3080
3070 IF TF= 1THEN 3150
3080 PLOT 6,100:PLOT 14:PLOT 3,9,17:PRINT "BLUE CAR"
3085 PLOT 6,8:PLOT 14:PLOT 3,48,17:PRINT "RED CAR"
3090 T= 0:REM  CURRENT TURN FLAG
3100 X(1)= XB(0):Y(1)= YB(0)
3110 X(2)= XB(1):Y(2)= YB(1)
3120 X(4)= XR(0):Y(4)= YR(0)
3130 X(5)= XR(1):Y(5)= YR(1)
3140 GOTO 3300
3150 PLOT 6,73:PLOT 14:PLOT 3,48,17:PRINT "RED CAR"
3155 PLOT 6,32:PLOT 14:PLOT 3,9,17:PRINT "BLUE CAR"
3160 T= 1:REM  CURRENT TURN FLAG RED
3170 X(1)= XR(0):Y(1)= YR(0)
3180 X(2)= XR(1):Y(2)= YR(1)
3190 X(4)= XB(0):Y(4)= YB(0)
3200 X(5)= XB(1):Y(5)= YB(1)
3300 PLOT 6,28:REM  SET YELLOW BG BLUE FG
3305 PLOT 15
3310 PLOT 3,21,16:PRINT "                  "
3320 PLOT 3,21,17:PRINT " ENTER ONE CHANGE "
3330 PLOT 3,21,18:PRINT "                  "
3340 PLOT 3,21,19:PRINT "   FASTER    F    "
3350 PLOT 3,21,20:PRINT "   SLOWER    S    "
3360 PLOT 3,21,21:PRINT "   LEFT      L    "
3370 PLOT 3,21,22:PRINT "   RIGHT     R    "
3375 PLOT 3,21,23:PRINT "   COAST     C    "
3380 PLOT 3,21,24:PRINT "                  "
3390 PLOT 3,41,21:PLOT 14:INPUT D$
3400 IF NOT ((D$= "F")OR (D$= "S")OR (D$= "L")OR (D$= "R")OR (D$= "C"))THEN 3450
3410 GOTO 3506
3450 PLOT 15:PLOT 6,66:PLOT 3,39,16:PRINT " WRONG "
3460 PLOT 3,39,17:PRINT "LETTER "
3470 FOR I= 1TO 500:NEXT I
3480 PLOT 15:PLOT 3,39,16:PLOT 6,0:PRINT "       "
3490 PLOT 3,39,17:PRINT "       "
3495 PLOT 3,41,21:PLOT 6,0:PLOT 14:PRINT "    "
3500 GOTO 3300
3506 GOSUB 29000:REM  "COAST" TRANSLATION
3510 IF D$= "F"GOTO 3550
3520 IF D$= "S"GOTO 3560
3530 IF D$= "L"GOTO 3580
3540 IF D$= "R"GOTO 3620
3542 X(3)= X(2):Y(3)= Y(2):REM  ASSIGN "COAST"VECTOR
3545 GOTO 3700
3550 DM= CH:GOTO 3660
3560 DM= - CH
3575 GOTO 3660
3580 DM= CH:GOTO 3670
3620 DM= - CH
3650 GOTO 3670
3660 IF (X(1)= X(2))AND (Y(1)= Y(2))THEN GOSUB 28000:GOTO 3700
3662 GOSUB 30000:REM  MOD CHANGE
3665 GOTO 3700
3670 IF (X(1)= X(2))AND (Y(1)= Y(2))THEN GOSUB 28000:GOTO 3700
3672 GOSUB 32000:REM  TURN CHANGE
3700 GOSUB 34000:REM  CHECK VECTORS FOR INTERSECTION
3750 IF K= 1THEN GOSUB 37000:X(3)= X(6):Y(3)= Y(6):GOSUB 3800:GOTO 3050
3760 GOSUB 3800:REM  THIS SUB DECIDES THE TRACK SECTOR
3770 GOTO 4010
3800 REM  THIS SUBROUTINE TESTS FOR NEW SECTOR
3801 IF T= 1GOTO 3900
3803 ON SBGOTO 3806,3818,3830,3842,3854,3866
3806 X(4)= 113:Y(4)= 20:X(5)= 126:Y(5)= 3
3809 GOSUB 34000
3812 IF K= 1THEN SB= SB+ 1
3815 GOTO 4000
3818 X(4)= 113:Y(4)= 67:X(5)= 126:Y(5)= 84
3821 GOSUB 34000
3824 IF K= 1THEN SB= SB+ 1
3827 GOTO 4000
3830 X(4)= 37:Y(4)= 67:X(5)= 50:Y(5)= 84
3833 GOSUB 34000
3836 IF K= 1THEN SB= SB+ 1
3839 GOTO 4000
3842 X(4)= 37:Y(4)= 103:X(5)= 50:Y(5)= 124
3845 GOSUB 34000
3848 IF K= 1THEN SB= SB+ 1
3851 GOTO 4000
3854 X(4)= 1:Y(4)= 124:X(5)= 14:Y(5)= 103
3857 GOSUB 34000
3860 IF K= 1THEN SB= SB+ 1
3863 GOTO 4000
3866 X(4)= 1:Y(4)= 3:X(5)= 14:Y(5)= 20
3869 GOSUB 34000
3872 IF K= 1THEN SB= SB+ 1
3875 GOTO 4000
3900 ON SRGOTO 3912,3924,3936,3948,3960,3972
3912 X(4)= 113:Y(4)= 20:X(5)= 126:Y(5)= 3
3915 GOSUB 34000
3918 IF K= 1THEN SR= SR+ 1
3921 GOTO 4000
3924 X(4)= 113:Y(4)= 67:X(5)= 126:Y(5)= 84
3927 GOSUB 34000
3930 IF K= 1THEN SR= SR+ 1
3933 GOTO 4000
3936 X(4)= 37:Y(4)= 67:X(5)= 50:Y(5)= 84
3939 GOSUB 34000
3942 IF K= 1THEN SR= SR+ 1
3945 GOTO 4000
3948 X(4)= 37:Y(4)= 103:X(5)= 50:Y(5)= 124
3951 GOSUB 34000
3954 IF K= 1THEN SR= SR+ 1
3957 GOTO 4000
3960 X(4)= 1:Y(4)= 124:X(5)= 14:Y(5)= 103
3963 GOSUB 34000
3966 IF K= 1THEN SR= SR+ 1
3969 GOTO 4000
3972 X(4)= 1:Y(4)= 3:X(5)= 14:Y(5)= 20
3975 GOSUB 34000
3978 IF K= 1THEN SR= SR+ 1
4000 RETURN
4001 REM  THIS IS WHERE WALL COLLISIONS ARE CHECKED
4010 IF T= 1GOTO 4030
4020 S= SB:GOTO 4040
4030 S= SR
4040 ON SGOTO 4100,4200,4300,4400,4500,4600,4100
4100 IF Y(3)> Y(1)GOTO 4120
4110 IF Y(3)< Y(1)GOTO 4160
4115 GOTO 4700
4120 X(4)= 1:Y(4)= 20:X(5)= 113:Y(5)= 20
4130 GOSUB 34000
4140 IF K= 1THEN GOSUB 35000:GOTO 5000
4150 GOTO 4700
4160 X(4)= 1:Y(4)= 3:X(5)= 126:Y(5)= 3
4170 GOSUB 34000
4180 IF K= 1THEN GOSUB 35000:GOTO 5000
4190 GOTO 4700
4200 IF X(3)> X(1)GOTO 4220
4210 IF X(3)< X(1)GOTO 4260
4215 GOTO 4700
4220 X(4)= 126:Y(4)= 3:X(5)= 126:Y(5)= 84
4230 GOSUB 34000
4240 IF K= 1THEN GOSUB 35000:GOTO 5000
4250 GOTO 4700
4260 X(4)= 113:Y(4)= 3:X(5)= 113:Y(5)= 67
4270 GOSUB 34000
4280 IF K= 1THEN GOSUB 35000:GOTO 5000
4290 GOTO 4700
4300 IF Y(3)> Y(1)GOTO 4320
4310 IF Y(3)< Y(1)GOTO 4360
4315 GOTO 4700
4320 X(4)= 50:Y(4)= 84:X(5)= 126:Y(5)= 84
4330 GOSUB 34000
4340 IF K= 1THEN GOSUB 35000:GOTO 5000
4350 GOTO 4700
4360 X(4)= 37:Y(4)= 67:X(5)= 126:Y(5)= 67
4370 GOSUB 34000
4380 IF K= 1THEN GOSUB 35000:GOTO 5000
4390 GOTO 4700
4400 IF X(3)> X(1)GOTO 4420
4410 IF X(3)< X(1)GOTO 4460
4415 GOTO 4700
4420 X(4)= 50:Y(4)= 67:X(5)= 50:Y(5)= 124
4430 GOSUB 34000
4440 IF K= 1THEN GOSUB 35000:GOTO 5000
4450 GOTO 4700
4460 X(4)= 37:Y(4)= 67:X(5)= 37:Y(5)= 103
4470 GOSUB 34000
4480 IF K= 1THEN GOSUB 35000:GOTO 5000
4490 GOTO 4700
4500 IF Y(3)> Y(1)GOTO 4520
4510 IF Y(3)< Y(1)GOTO 4560
4515 GOTO 4700
4520 X(4)= 1:Y(4)= 124:X(5)= 50:Y(5)= 124
4530 GOSUB 34000
4540 IF K= 1THEN GOSUB 35000:GOTO 5000
4550 GOTO 4700
4560 X(4)= 14:Y(4)= 103:X(5)= 50:Y(5)= 103
4570 GOSUB 34000
4580 IF K= 1THEN GOSUB 35000:GOTO 5000
4590 GOTO 4700
4600 IF X(3)> X(1)GOTO 4620
4610 IF X(3)< X(1)GOTO 4660
4615 GOTO 4700
4620 X(4)= 14:Y(4)= 124:X(5)= 14:Y(5)= 20
4630 GOSUB 34000
4640 IF K= 1THEN GOSUB 35000:GOTO 5000
4650 GOTO 4700
4660 X(4)= 1:Y(4)= 124:X(5)= 1:Y(5)= 3
4670 GOSUB 34000
4680 IF K= 1THEN GOSUB 35000:GOTO 5000
4700 GOSUB 36000
4710 IF R= 1GOTO 4800
4720 PLOT 15:PLOT 6,66:PLOT 3,10,8:PRINT "REVERSE"
4730 PLOT 3,11,9:PRINT "LOSE"
4732 PLOT 3,10,10:PRINT "2 TURNS"
4734 FOR I= 1TO 500:NEXT I
4736 FOR I= 1TO 3:PLOT 3,10,7+ I:PRINT "       ":NEXT I
4740 IF T= 1GOTO 4760
4750 TB= TB+ 3:GOTO 5030
4760 TR= TR+ 3:GOTO 5030
4800 GOSUB 38000
5000 IF (SB< 7)AND (SR< 7)GOTO 5030
5010 X(4)= 50:Y(4)= 4:X(5)= 50:Y(5)= 19
5012 GOSUB 34000
5020 IF K= 1GOTO 5100
5030 PLOT 14:PLOT 6,4:PLOT 3,12,23:PRINT TB
5032 PLOT 3,18,23:PRINT SB
5040 PLOT 6,1:PLOT 3,50,23:PRINT TR
5042 PLOT 3,54,23:PRINT SR
5050 GOTO 3050
5100 IF T= 1GOTO 5200
5110 PLOT 14:PLOT 6,4:PLOT 3,9,25:PRINT "WINNER"
5120 GOTO 5210
5200 PLOT 14:PLOT 6,1:PLOT 3,48,25:PRINT "WINNER"
5210 PLOT 14:PLOT 6,0:PLOT 3,32,1
5215 PRINT "                    "
5220 PLOT 3,32,3:PRINT "                    "
5225 PLOT 3,32,5:PRINT "                    "
5227 PLOT 6,2
5230 PLOT 3,32,3:INPUT "WANT ANOTHER RACE?  Y/N    ";A$
5235 IF A$= "Y"THEN RUN
5340 LOAD "MENU.BAS":RUN
5345 END
28000 REM  THIS SUBROUTINE HANDLES ZERO VECTORS
28010 REM  X(1) Y(1) IS INPUT POINT
28020 REM  X(3) Y(3) HEAD IS COMPUTED
28030 REM  S=1 TO 6 IS INPUT FOR THE CURRENT TRACK SECTION
28040 IF T= 1GOTO 28100
28050 S= SB:GOTO 28400
28100 S= SR
28400 ON SGOTO 28410,28430,28450,28430,28450,28470
28410 IF (D$= "F")OR (D$= "S")GOTO 28420
28415 X(3)= X(1):Y(3)= Y(1)+ DM:GOTO 28990
28420 X(3)= X(1)+ DM:Y(3)= Y(1):GOTO 28990
28430 IF (D$= "F")OR (D$= "S")GOTO 28440
28435 X(3)= X(1)- DM:Y(3)= Y(1):GOTO 28990
28440 X(3)= X(1):Y(3)= Y(1)+ DM:GOTO 28990
28450 IF (D$= "F")OR (D$= "S")GOTO 28460
28455 X(3)= X(1):Y(3)= Y(1)- DM:GOTO 28990
28460 X(3)= X(1)- DM:Y(3)= Y(1):GOTO 28990
28470 IF (D$= "F")OR (D$= "S")GOTO 28480
28475 X(3)= X(1)+ DM:Y(3)= Y(1):GOTO 28990
28480 X(3)= X(1):Y(3)= Y(1)- DM
28990 RETURN
29000 REM  THIS SUBROUTINE COMPUTES THE INITIAL PARALLEL VECTOR
29001 REM  WHICH IS THE BASIS FOR THE NEXT CHANGE
29002 REM  X(1)Y(1)OLD TAIL X(2)Y(2) OLD HEAD (ON INPUT)
29003 REM  X(1)Y(1)NEW TAIL X(2)Y(2) NEW HEAD (ON OUTPUT)
29010 XC= X(2)- X(1)
29020 YC= Y(2)- Y(1):REM  OLD COMPONENTS
29030 X(1)= X(2):Y(1)= Y(2)
29040 X(2)= X(1)+ XC
29050 Y(2)= Y(1)+ YC
29060 RETURN
30000 REM  THIS SUBROUTINE COMPUTES THE NEW COORDINATES OF THE
30001 REM  VECTOR HEAD FOR A MODULUS CHANGE
30002 REM  +DM FOR INCREASE...-DM FOR DECREASE
30003 REM  X(1)Y(1) IS TAIL X(2)Y(2) IS HEAD
30010 M= SQR ((X(2)- X(1))^ 2+ (Y(2)- Y(1))^ 2):REM  OLD MODULUS
30020 X(3)= INT (DM/ M* (X(2)- X(1))+ X(2))
30030 Y(3)= INT (DM/ M* (Y(2)- Y(1))+ Y(2))
30040 RETURN
32000 REM  THIS SUBROUTINE COMPUTES THE NEW HEAD COORDINATES
32001 REM  FOR A LEFT OR RIGHT CHANGE
32002 REM  +DM GIVES LEFT TURN...-DM GIVES RIGHT TURN
32003 REM  X(1)Y(1)TAIL  X(2)Y(2)HEAD
32010 M= SQR ((X(2)- X(1))^ 2+ (Y(2)- Y(1))^ 2)
32020 SI= (Y(2)- Y(1))/ M:REM  SIN RATIO
32030 CO= (X(2)- X(1))/ M:REM  COS RATIO
32040 X(3)= INT (X(2)- DM* SI)
32050 Y(3)= INT (Y(2)+ DM* CO)
32060 RETURN
34000 REM  THIS SUBROUTINE COMPUTES THE INTERSECTION OF TWO
34001 REM  LINE SEGMENTS
34002 REM  X(1)Y(1)  X(3)Y(3) COORDINATES OF FIRST SEGMENT
34003 REM  X(4)Y(4)  X(5)Y(5) COORDINATES OF SECOND SEGMENT
34010 DN= (Y(5)- Y(4))* (X(3)- X(1))- (X(5)- X(4))* (Y(3)- Y(1))
34020 REM  LINES ARE PARALLEL IF DENOMINATOR IS 0
34021 IF DN= 0GOTO 34024
34022 GOTO 34030
34024 K= 0:GOTO 34090
34030 T(1)= ((X(4)- X(1))* (Y(3)- Y(1))- (Y(4)- Y(1))* (X(3)- X(1)))/ DN
34040 T(2)= ((X(4)- X(1))* (Y(5)- Y(4))- (Y(4)- Y(1))* (X(5)- X(4)))/ DN
34050 IF (T(1)> = 0)AND (T(1)< = 1)AND (T(2)> = 0)AND (T(2)< = 1)THEN 34070
34059 K= 0
34060 GOTO 34090
34070 X(6)= INT (X(1)+ T(2)* (X(3)- X(1)))
34080 Y(6)= INT (Y(1)+ T(2)* (Y(3)- Y(1)))
34082 K= 1:REM  COLLISION
34090 RETURN
35000 REM  THIS SUB DEALS WITH WALL COLLISIONS
35010 IF X(4)= X(5)GOTO 35030
35020 IF Y(4)= Y(5)GOTO 35050
35030 IF X(4)> = X(1)THEN X(4)= X(4)- 1:X(5)= X(5)- 1:GOTO 35070
35040 IF X(4)< X(1)THEN X(4)= X(4)+ 1:X(5)= X(5)+ 1:GOTO 35070
35050 IF Y(4)> = Y(1)THEN Y(4)= Y(4)- 1:Y(5)= Y(5)- 1:GOTO 35070
35060 IF Y(4)< Y(1)THEN Y(4)= Y(4)+ 1:Y(5)= Y(5)+ 1
35070 GOSUB 34000
35080 IF T= 1GOTO 35200
35090 PLOT 6,4:PLOT 2,X(1),Y(1),242,X(6),Y(6),255
35100 PLOT 6,0:PLOT 2,XB(0),YB(0),242,XB(1),YB(1),255
35110 TB= TB+ 3:REM  BLUE PENALTY
35120 PLOT 15:PLOT 3,9,8:PLOT 6,66:PRINT "COLLISION"
35130 PLOT 3,9,9:PRINT "  LOSE   "
35140 PLOT 3,9,10:PRINT " 2 TURNS "
35150 FOR I= 1TO 500:NEXT I
35160 PLOT 6,0:PLOT 2,X(1),Y(1),242,X(6),Y(6),255:REM  ERASE
35170 XB(0)= X(6):YB(0)= Y(6):REM  RESTART AS ZERO VECTOR
35175 XB(1)= X(6):YB(1)= Y(6)
35180 PLOT 6,4:PLOT 2,253,XB(0),YB(0),255:REM  REST PLACE
35190 GOTO 35300
35200 PLOT 6,1:PLOT 2,X(1),Y(1),242,X(6),Y(6),255
35210 PLOT 6,0:PLOT 2,XR(0),YR(0),242,XR(1),YR(1),255
35220 TR= TR+ 3:REM  RED PENALTY
35230 PLOT 15:PLOT 3,9,8:PLOT 6,66:PRINT "COLLISION"
35240 PLOT 3,9,9:PRINT "  LOSE   "
35250 PLOT 3,9,10:PRINT " 2 TURNS "
35260 FOR I= 1TO 500:NEXT I
35270 PLOT 6,0:PLOT 2,X(1),Y(1),242,X(6),Y(6),255
35280 XR(0)= X(6):YR(0)= Y(6):REM  RESTART AS ZERO
35285 XR(1)= X(6):YR(1)= Y(6)
35290 PLOT 6,1:PLOT 2,XR(0),YR(0),255:REM  REST PLACE
35300 FOR I= 1TO 3
35310 PLOT 6,0:PLOT 3,9,7+ I:PRINT "         "
35320 NEXT I
35330 RETURN
36000 REM   SUBROUTINE TO CHECK CORRECT TRACK DIRECTION
36002 REM  X(1)Y(1) VECTOR TAIL
36004 REM  X(3)Y(3) VECTOR HEAD
36010 FX= X(3)- X(1)
36020 FY= Y(3)- Y(1)
36022 IF T= 1GOTO 36028
36024 S= SB:GOTO 36030
36028 S= SR
36030 ON SGOTO 36040,36060,36080,36060,36080,36100
36040 IF FX> = 0THEN R= 1:GOTO 36120
36050 GOTO 36110
36060 IF FY> = 0THEN R= 1:GOTO 36120
36070 GOTO 36110
36080 IF FX< = 0THEN R= 1:GOTO 36120
36090 GOTO 36110
36100 IF FY< = 0THEN R= 1:GOTO 36120
36110 R= - 1
36120 RETURN
37000 REM  THIS SUB PROCESSES CAR COLLISIONS
37010 PLOT 15:PLOT 3,9,8:PLOT 6,66:PRINT "COLLISION"
37020 PLOT 3,9,9:PRINT "  LOSE   "
37030 PLOT 3,9,10:PRINT " 2 TURNS "
37040 FOR I= 1TO 500:NEXT I
37050 PLOT 15:
37060 FOR I= 1TO 3
37070 PLOT 6,0:PLOT 3,9,7+ I:PRINT "         "
37080 NEXT I
37100 IF T= 1GOTO 37160
37110 TB= TB+ 3:REM  2PENALTY TURNS TO BLUE
37120 PLOT 6,4:PLOT 2,X(1),Y(1),242,X(6),Y(6),255:REM  SHORT VEC
37130 PLOT 6,0:PLOT 2,XB(0),YB(0),242,XB(1),YB(1),255:REM  ERASE
37140 XB(0)= X(1):YB(0)= Y(1):XB(1)= X(6):YB(1)= Y(6):REM  REASSIGN
37150 GOTO 37200
37160 TR= TR+ 3:REM  2 PENALTY TURNS TO RED
37170 PLOT 6,1:PLOT 2,X(1),Y(1),242,X(6),Y(6),255:REM  SHORT VEC
37180 PLOT 6,0:PLOT 2,XR(0),YR(0),242,XR(1),YR(1),255:REM  ERASE
37190 XR(0)= X(1):YR(0)= Y(1):XR(1)= X(6):YR(1)= Y(6):REM  REASSIGN
37200 RETURN
38000 REM  THIS SUB PROCESSES VALID VECTORS
38010 IF T= 1GOTO 38080
38020 PLOT 6,4:PLOT 2,X(1),Y(1),242,X(3),Y(3),255
38040 TB= TB+ 1:REM  ADD ONE TO BLUE TURNS
38050 PLOT 6,0:PLOT 2,XB(0),YB(0),242,XB(1),YB(1),255:REM  ERASE
38060 XB(0)= X(1):YB(0)= Y(1):XB(1)= X(3):YB(1)= Y(3):REM  REASSIGN
38070 GOTO 38130
38080 PLOT 6,1:PLOT 2,X(1),Y(1),242,X(3),Y(3),255:
38100 TR= TR+ 1:REM  ADD ONE TO RED TURNS
38110 PLOT 6,0:PLOT 2,XR(0),YR(0),242,XR(1),YR(1),255
38120 XR(0)= X(1):YR(0)= Y(1):XR(1)= X(3):YR(1)= Y(3):REM  REASSIGN
38130 RETURN