Objective 1 You are to take the given code which shows 1 car

Objective 1:
You are to take the given code which shows 1 car running a race. Your job will be to add 3 more cars with varying stats which should participate in the race just like the first car.
Create a class Card Car to handle the Car objects. Use arrays to handle multiple objects. The variable names and types maybe changed to suit your preferences so long as the cars perform the same way.
public class RaceTrack {
public static void main(String[] args) {
int RaceNumber = 1;
      
       //car 1
       String car1Name = \"Bob Barker Car\";
       float car1HandlingS = 0.30f;
       float car1HandlingC = 0.65f;
       float car1HandlingU = 0.1f;
       float car1RaceProgress = 0;
       float car1CurrentSpeed = 0;
       float car1TopSpeed = 0.95f;
       float car1Acceleration = 0.11f;
       int car1Wins = 0;
       char car1Symbol = \'B\';

       String Racetrack = \"----------U-C-S-------C---S---------C--U----\";
       int raceLength = Racetrack.length();
      
       boolean runningRace = true; //once someone wins we can stop this
       while (runningRace) {
           System.out.println(Racetrack);

           //Car 1
           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;
               else 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;
               }  
           }
       }
}

   String car2Name = \"Pat Sajak Car\";
   car2HandlingS = 0.45f;
   car2HandlingC = 0.85f;
   car2HandlingU = 0.3f;
   car2RaceProgress = 0;
   car2CurrentSpeed = 0;
   car2TopSpeed = 0.78f;
   car2Acceleration = 0.08f;
   car2Wins = 0;
   car2Symbol = \'P\';

   String car3Name = \"Alex Trebek Car\";
   car3HandlingS = 0.25f;
   car3HandlingC = 0.55f;
   car3HandlingU = 0.1f;
   car3RaceProgress = 0;
   car3CurrentSpeed = 0;
   car3TopSpeed = 0.95f;
   car3Acceleration = 0.19f;
   car3Wins = 0;
   car3Symbol = \'A\';

   String car4Name = \"Drew Carrie Car\";
   Car4HandlingS = 0.15f;
   Car4HandlingC = 0.25f;
   Car4HandlingU = 0.05f;
   Car4RaceProgress = 0;
   Car4CurrentSpeed = 0;
   Car4TopSpeed = 0.9999f;
   Car4Acceleration = 0.21f;
   Car4Wins = 0;
   Car4Symbol = \'D\';

Objective 2:
Right now the race is only being run once. Adjust the code so that the race can be run 25 times to simulate an entire season. At the end of the season the car with the most wins should be output along with the race wins total.

Objective 3:
Each race of the season should be a different race. Randomly create racetracks prior to the start of each race. Do this by randomly appending the four characters to a string. You can skew the random numbers to give more strait-aways or turns depending on your preference (so long as there is a chance of everything appearing in a race).

Solution

public class RaceTrack {
public static void main(String[] args) {
int RaceNumber = 1;
      
       //car 1
       String car1Name = \"Bob Barker Car\";
       float car1HandlingS = 0.30f;
       float car1HandlingC = 0.65f;
       float car1HandlingU = 0.1f;
       float car1RaceProgress = 0;
       float car1CurrentSpeed = 0;
       float car1TopSpeed = 0.95f;
       float car1Acceleration = 0.11f;
       int car1Wins = 0;
       char car1Symbol = \'B\';

       String Racetrack = \"----------U-C-S-------C---S---------C--U----\";
       int raceLength = Racetrack.length();
      
       boolean runningRace = true; //once someone wins we can stop this
       while (runningRace) {
           System.out.println(Racetrack);

           //Car 1
           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;
               else 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;
               }  
           }
       }
}

Objective 1: You are to take the given code which shows 1 car running a race. Your job will be to add 3 more cars with varying stats which should participate in
Objective 1: You are to take the given code which shows 1 car running a race. Your job will be to add 3 more cars with varying stats which should participate in
Objective 1: You are to take the given code which shows 1 car running a race. Your job will be to add 3 more cars with varying stats which should participate in

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site