I have been workign on a F1 Management game for some time.
I have never really been saticfied with the representation of cars on a track following waypoints.
I basacially calcualte the laptime of each car and offset the waypoints to make it look like the car in front is in front.
At the end of each lap the "gap" is recalculated and the offset adjusted.
I feel this can be improved and I would liek some creative advice.
Please see a video here on Youtube
http://www.youtube.com/watch?v=qBZWVDwjW9Q
And the code here (apologies I am not that good at programming)
Graphic_Race:
// When car in Pits n=0 for that car, waypoint = 0
CarPos0=0
CarPos1=0
CarPos2=0
CarPos3=0
CarPos4=0
CarPos5=0
CarPos6=0
CarPos7=0
CarPos8=0
CarPos9=0
CarPos10=0
CarPos11=0
CarPos12=0
CarPos13=0
CarPos14=0
CarPos15=0
CarPos16=0
CarPos17=0
CarPos18=0
CarPos19=0
// Lapped calculation required to prevent leader sprite from disappearing as Interval should be zero... ???
// may need to use num of waypoints / laptime for example ??????????????????????????????????
Interval_Last=INT(gap(DriversRunning-1))
If Interval_last<MaxLapTime then CarPos0=CarPos0+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos0=CarPos0+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos0=CarPos0+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos0=CarPos0+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(1))
If Interval_last<MaxLapTime then CarPos1=CarPos1+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos1=CarPos1+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos1=CarPos1+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos1=CarPos1+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(2))
If Interval_last<MaxLapTime then CarPos2=CarPos2+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos2=CarPos2+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos2=CarPos2+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos2=CarPos2+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(3))
If Interval_last<MaxLapTime then CarPos3=CarPos3+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos3=CarPos3+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos3=CarPos3+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos3=CarPos3+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(4))
If Interval_last<MaxLapTime then CarPos4=CarPos4+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos4=CarPos4+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos4=CarPos4+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos4=CarPos4+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(5))
If Interval_last<MaxLapTime then CarPos5=CarPos5+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos5=CarPos5+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos5=CarPos5+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos5=CarPos5+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(6))
If Interval_last<MaxLapTime then CarPos6=CarPos6+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos6=CarPos6+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos6=CarPos6+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos6=CarPos6+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(7))
If Interval_last<MaxLapTime then CarPos7=CarPos7+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos7=CarPos7+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos7=CarPos7+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos7=CarPos7+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(8))
If Interval_last<MaxLapTime then CarPos8=CarPos8+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos8=CarPos8+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos8=CarPos8+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos8=CarPos8+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(9))
If Interval_last<MaxLapTime then CarPos9=CarPos9+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos9=CarPos9+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos9=CarPos9+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos9=CarPos9+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(10))
If Interval_last<MaxLapTime then CarPos10=CarPos10+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos10=CarPos10+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos10=CarPos10+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos10=CarPos10+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(11))
If Interval_last<MaxLapTime then CarPos11=CarPos11+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos11=CarPos11+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos11=CarPos11+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos11=CarPos11+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(12))
If Interval_last<MaxLapTime then CarPos12=CarPos12+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos12=CarPos12+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos12=CarPos12+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos12=CarPos12+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(13))
If Interval_last<MaxLapTime then CarPos13=CarPos13+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos13=CarPos13+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos13=CarPos13+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos13=CarPos13+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(14))
If Interval_last<MaxLapTime then CarPos14=CarPos14+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos14=CarPos14+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos14=CarPos14+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos14=CarPos14+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(15))
If Interval_last<MaxLapTime then CarPos15=CarPos15+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos15=CarPos15+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos15=CarPos15+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos15=CarPos15+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(16))
If Interval_last<MaxLapTime then CarPos16=CarPos16+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos16=CarPos16+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos16=CarPos16+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos16=CarPos16+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(17))
If Interval_last<MaxLapTime then CarPos17=CarPos17+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos17=CarPos17+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos17=CarPos17+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos17=CarPos17+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
Interval_last=INT(gap(DriversRunning-1)-gap(18))
If Interval_last<MaxLapTime then CarPos18=CarPos18+(Interval_last/1000)*track_graphic_offset
If Interval_last>MaxLapTime then CarPos18=CarPos18+((Interval_last-MaxLapTime)/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*2) then CarPos18=CarPos18+((Interval_last-(MaxLapTime*2))/1000)*track_graphic_offset
If Interval_last>(MaxLapTime*3) then CarPos18=CarPos18+((Interval_last-(MaxLapTime*3))/1000)*track_graphic_offset
If CarPos20=>NumWaypoints then Carpos20=0
If CarPos0=>NumWaypoints then Carpos0=0
If CarPos1=>NumWaypoints then Carpos1=0
If CarPos2=>NumWaypoints then Carpos2=0
If CarPos3=>NumWaypoints then Carpos3=0
If CarPos4=>NumWaypoints then Carpos4=0
If CarPos5=>NumWaypoints then Carpos5=0
If CarPos6=>NumWaypoints then Carpos6=0
If CarPos7=>NumWaypoints then Carpos7=0
If CarPos8=>NumWaypoints then Carpos8=0
If CarPos9=>NumWaypoints then Carpos9=0
If CarPos10=>NumWaypoints then Carpos10=0
If CarPos11=>NumWaypoints then Carpos11=0
If CarPos12=>NumWaypoints then Carpos12=0
If CarPos13=>NumWaypoints then Carpos13=0
If CarPos14=>NumWaypoints then Carpos14=0
If CarPos15=>NumWaypoints then Carpos15=0
If CarPos16=>NumWaypoints then Carpos16=0
If CarPos17=>NumWaypoints then Carpos17=0
If CarPos18=>NumWaypoints then Carpos18=0
If CarPos19=>NumWaypoints then Carpos19=0
For m= 0 to NumWaypoints
Gosub RACE_AND_QUAL_MENU
//Race_Timer=Race_Timer+5://linked to speed of game loop and NICE WAIT period ????
//5 for bahrain
If SC=0 and lap >2 and lap< (Racelaps-2)
Gosub Driver_Incident
EndIf
Gosub Race_Session_Timer :// currently being tested
Gosub Display_Flags_Logic
// graphic race display
// Safety car
Carx(20)=(WayPoints(CarPos20,0))
Cary(20)=(WayPoints(CarPos20,1))
// LEAD car
Carx(0)=(WayPoints(CarPos0,0))
Cary(0)=(WayPoints(CarPos0,1))
// 2nd car
If DriversRunning>1:Carx(1)=(WayPoints(CarPos1,0)):EndIf
If DriversRunning>1:Cary(1)=(WayPoints(CarPos1,1)):EndIf
// 3rd car
If DriversRunning>2:Carx(2)=(WayPoints(CarPos2,0)):EndIf
If DriversRunning>2:Cary(2)=(WayPoints(CarPos2,1)):EndIf
// 4th car
If DriversRunning>3:Carx(3)=(WayPoints(CarPos3,0)):EndIf
If DriversRunning>3:Cary(3)=(WayPoints(CarPos3,1)):EndIf
// 5th car
If DriversRunning>4:Carx(4)=(WayPoints(CarPos4,0)):EndIf
If DriversRunning>4:Cary(4)=(WayPoints(CarPos4,1)):EndIf
// 6th car
If DriversRunning>5:Carx(5)=(WayPoints(CarPos5,0)):EndIf
If DriversRunning>5:Cary(5)=(WayPoints(CarPos5,1)):EndIf
// 7th car
If DriversRunning>6:Carx(6)=(WayPoints(CarPos6,0)):EndIf
If DriversRunning>6:Cary(6)=(WayPoints(CarPos6,1)):EndIf
// 8th car
If DriversRunning>7:Carx(7)=(WayPoints(CarPos7,0)):EndIf
If DriversRunning>7:Cary(7)=(WayPoints(CarPos7,1)):EndIf
// 9th car
If DriversRunning>8:Carx(8)=(WayPoints(CarPos8,0)):EndIf
If DriversRunning>8:Cary(8)=(WayPoints(CarPos8,1)):EndIf
// 10th car
If DriversRunning>9:Carx(9)=(WayPoints(CarPos9,0)):EndIf
If DriversRunning>9:Cary(9)=(WayPoints(CarPos9,1)):EndIf
// 11th car
If DriversRunning>10:Carx(10)=(WayPoints(CarPos10,0)):EndIf
If DriversRunning>10:Cary(10)=(WayPoints(CarPos10,1)):EndIf
// 12th car
If DriversRunning>11:Carx(11)=(WayPoints(CarPos11,0)):EndIf
If DriversRunning>11:Cary(11)=(WayPoints(CarPos11,1)):EndIf
// 13th car
If DriversRunning>12:Carx(12)=(WayPoints(CarPos12,0)):EndIf
If DriversRunning>12:Cary(12)=(WayPoints(CarPos12,1)):EndIf
// 14th car
If DriversRunning>13:Carx(13)=(WayPoints(CarPos13,0)):EndIf
If DriversRunning>13:Cary(13)=(WayPoints(CarPos13,1)):EndIf
// 15th car
If DriversRunning>14:Carx(14)=(WayPoints(CarPos14,0)):EndIf
If DriversRunning>14:Cary(14)=(WayPoints(CarPos14,1)):EndIf
// 16th car
If DriversRunning>15:Carx(15)=(WayPoints(CarPos15,0)):EndIf
If DriversRunning>15:Cary(15)=(WayPoints(CarPos15,1)):EndIf
// 17th car
If DriversRunning>16:Carx(16)=(WayPoints(CarPos16,0)):EndIf
If DriversRunning>16:Cary(16)=(WayPoints(CarPos16,1)):EndIf
// 18th car
If DriversRunning>17:Carx(17)=(WayPoints(CarPos17,0)):EndIf
If DriversRunning>17:Cary(17)=(WayPoints(CarPos17,1)):EndIf
// 19th car
If DriversRunning>18:Carx(18)=(WayPoints(CarPos18,0)):EndIf
If DriversRunning>18:Cary(18)=(WayPoints(CarPos18,1)):EndIf
// 20th car
If DriversRunning>19:Carx(19)=(WayPoints(CarPos19,0)):EndIf
If DriversRunning>19:Cary(19)=(WayPoints(CarPos19,1)):EndIf
// CAR0 is Leader
If SC=1 then Sprite 21,Carx(20)-5,Cary(20)-10,car(20)
Sprite 1,Carx(0)-5,Cary(0)-10,car(0)
Scale Sprite 1,115
Set Sprite 1,1,1
Set Sprite Priority 1,2
Sprite 2,Carx(1)-5,Cary(1)-10,car(1)
Set Sprite 2,1,1
Set Sprite Priority 2,2
Sprite 3,Carx(2)-5,Cary(2)-10,car(2)
Set Sprite 3,1,1
Set Sprite Priority 3,2
Sprite 4,Carx(3)-5,Cary(3)-10,car(3)
Set Sprite 4,1,1
Set Sprite Priority 4,2
Sprite 5,Carx(4)-5,Cary(4)-10,car(4)
Set Sprite 5,1,1
Set Sprite Priority 5,2
Sprite 6,Carx(5)-5,Cary(5)-10,car(5)
Set Sprite 6,1,1
Set Sprite Priority 6,2
Sprite 7,Carx(6)-5,Cary(6)-10,car(6)
Set Sprite 7,1,1
Set Sprite Priority 7,2
Set Sprite 8,1,1
Set Sprite Priority 8,2
Set Sprite 9,1,1
Set Sprite Priority 9,2
Set Sprite 10,1,1
Set Sprite Priority 10,2
Set Sprite 11,1,1
Set Sprite Priority 11,2
Set Sprite 12,1,1
Set Sprite Priority 12,2
Set Sprite 13,1,1
Set Sprite Priority 13,2
Set Sprite 14,1,1
Set Sprite Priority 14,2
Set Sprite 15,1,1
Set Sprite Priority 15,2
Set Sprite 16,1,1
Set Sprite Priority 16,2
Set Sprite 17,1,1
Set Sprite Priority 17,2
Set Sprite 18,1,1
Set Sprite Priority 18,2
Set Sprite 19,1,1
Set Sprite Priority 19,2
Set Sprite 20,1,1
Set Sprite Priority 20,2
If DriversRunning>1:Sprite 2,Carx(1)-5,Cary(1)-10,car(1)
Else
hide Sprite 2
EndIf
If DriversRunning>2:Sprite 3,Carx(2)-5,Cary(2)-10,car(2)
Else
hide Sprite 3
EndIf
If DriversRunning>3:Sprite 4,Carx(3)-5,Cary(3)-10,car(3)
Else
hide Sprite 4
EndIf
If DriversRunning>4:Sprite 5,Carx(4)-5,Cary(4)-10,car(4)
Else
hide Sprite 5
EndIf
If DriversRunning>5:Sprite 6,Carx(5)-5,Cary(5)-10,car(5)
Else
hide Sprite 6
EndIf
If DriversRunning>6:Sprite 7,Carx(6)-5,Cary(6)-10,car(6)
Else
hide Sprite 7
EndIf
If DriversRunning>7:Sprite 8,Carx(7)-5,Cary(7)-10,car(7)
Else
hide Sprite 8
EndIf
If DriversRunning>8:Sprite 9,Carx(8)-5,Cary(8)-10,car(8)
Else
hide Sprite 9
EndIf
If DriversRunning>9:Sprite 10,Carx(9)-5,Cary(9)-10,car(9)
Else
hide Sprite 10
EndIf
If DriversRunning>10:Sprite 11,Carx(10)-5,Cary(10)-10,car(10)
Else
hide Sprite 11
EndIf
If DriversRunning>11:Sprite 12,Carx(11)-5,Cary(11)-10,car(11)
Else
hide Sprite 12
EndIf
If DriversRunning>12:Sprite 13,Carx(12)-5,Cary(12)-10,car(12)
Else
hide Sprite 13
EndIf
If DriversRunning>13:Sprite 14,Carx(13)-5,Cary(13)-10,car(13)
Else
hide Sprite 14
EndIf
If DriversRunning>14:Sprite 15,Carx(14)-5,Cary(14)-10,car(14)
Else
hide Sprite 15
EndIf
If DriversRunning>15:Sprite 16,Carx(15)-5,Cary(15)-10,car(15)
Else
hide Sprite 16
EndIf
If DriversRunning>16:Sprite 17,Carx(16)-5,Cary(16)-10,car(16)
Else
hide Sprite 17
EndIf
If DriversRunning>17:Sprite 18,Carx(17)-5,Cary(17)-10,car(17)
Else
hide Sprite 18
EndIf
If DriversRunning>18:Sprite 19,Carx(18)-5,Cary(18)-10,car(18)
Else
hide Sprite 19
EndIf
If DriversRunning>19:Sprite 20,Carx(19)-5,Cary(19)-10,car(19)
Else
hide Sprite 20
EndIf
//Check for any animation playing
Gosub Animation_playing_Check
//Loop Timing adjustments for Pace car and pitstops to slow cars down visualy.
If SC=0
NICE WAIT Gamespeed
EndIf
If SC=1
NICE WAIT Gamespeed+240
EndIf
Wait PlaySpeed
Sync
Rem Car0 Lead Calculation
If CarPos20=>NumWaypoints then Carpos20=0
If CarPos0=>NumWaypoints then Carpos0=0
If CarPos1=>NumWaypoints then Carpos1=0
If CarPos2=>NumWaypoints then Carpos2=0
If CarPos3=>NumWaypoints then Carpos3=0
If CarPos4=>NumWaypoints then Carpos4=0
If CarPos5=>NumWaypoints then Carpos5=0
If CarPos6=>NumWaypoints then Carpos6=0
If CarPos7=>NumWaypoints then Carpos7=0
If CarPos8=>NumWaypoints then Carpos8=0
If CarPos9=>NumWaypoints then Carpos9=0
If CarPos10=>NumWaypoints then Carpos10=0
If CarPos11=>NumWaypoints then Carpos11=0
If CarPos12=>NumWaypoints then Carpos12=0
If CarPos13=>NumWaypoints then Carpos13=0
If CarPos14=>NumWaypoints then Carpos14=0
If CarPos15=>NumWaypoints then Carpos15=0
If CarPos16=>NumWaypoints then Carpos16=0
If CarPos17=>NumWaypoints then Carpos17=0
If CarPos18=>NumWaypoints then Carpos18=0
If CarPos19=>NumWaypoints then Carpos19=0
REM TO ADD on track calculation
REM Car20 Lead Calculation
CarPos20=CarPos20+1
CarPos0=CarPos0+1
CarPos1=CarPos1+1
CarPos2=CarPos2+1
CarPos3=CarPos3+1
CarPos4=CarPos4+1
CarPos5=CarPos5+1
CarPos6=CarPos6+1
CarPos7=CarPos7+1
CarPos8=CarPos8+1
CarPos9=CarPos9+1
CarPos10=CarPos10+1
CarPos11=CarPos11+1
CarPos12=CarPos12+1
CarPos13=CarPos13+1
CarPos14=CarPos14+1
CarPos15=CarPos15+1
CarPos16=CarPos16+1
CarPos17=CarPos17+1
CarPos18=CarPos18+1
CarPos19=CarPos19+1
Next m
Gosub Graphic_Race_Setup
Return