COSC 1
public class RaceTrack
{
public static void main(String[] args)
{
//car 1
String car1Name = "Bob Barker Car";
float car1HandlingS = 0.30f;
float car1HandlingC = 0.62f;
float car1HandlingU = 0.1f;
float car1RaceProgress = 0;
float car1CurrentSpeed = 0;
float car1TopSpeed = 0.93f;
float car1Acceleration = 0.11f;
int car1Wins = 0;
char car1Symbol = '1';
String Racetrack = "----------U-C-S-------C---S----C----C--U----";
int raceLength = Racetrack.length();
boolean runningRace = true; //once someone wins we can stop this
while (runningRace)
{
System.out.println(Racetrack);
//Car 1
//display the car
String Progress = "";
for (int i=0;i<car1RaceProgress;i++)
Progress+= " ";
System.out.println(Progress+car1Symbol);
//accelerate based on where you are on the track
//Racetrack[(int)car1RaceProgress)]
switch (Racetrack.charAt((int)car1RaceProgress))
{
case '-': //strait-away
if (car1CurrentSpeed < car1TopSpeed)
car1CurrentSpeed += car1Acceleration;
if (car1CurrentSpeed > car1TopSpeed)
car1CurrentSpeed = car1TopSpeed;
break;
case 'S': //Chicane
if (car1CurrentSpeed < car1TopSpeed*car1HandlingS)
car1CurrentSpeed += car1Acceleration;
else if (car1CurrentSpeed > car1TopSpeed*car1HandlingS)
car1CurrentSpeed = car1TopSpeed*car1HandlingS;
break;
case 'C': //curve
if (car1CurrentSpeed < car1TopSpeed*car1HandlingC)
car1CurrentSpeed += car1Acceleration;
else if (car1CurrentSpeed > car1TopSpeed*car1HandlingC)
car1CurrentSpeed = car1TopSpeed*car1HandlingC;
break;
case 'U': //Hairpin
if (car1CurrentSpeed < car1TopSpeed*car1HandlingU)
car1CurrentSpeed += car1Acceleration;
else if (car1CurrentSpeed > car1TopSpeed*car1HandlingU)
car1CurrentSpeed = car1TopSpeed*car1HandlingU;
break;
}
//increase progress
car1RaceProgress+=car1CurrentSpeed;
if (car1RaceProgress >= raceLength)
{
System.out.println(car1Name+" wins");
car1Wins++;
runningRace=false;
}
} //end of while loop
}//end of main
}