In: Computer Science
Explain the java class below, how it make:
import java.util.*;
import java.util.concurrent.TimeUnit;
public class RacingGame {
ArrayList<Driver> player = new
ArrayList<Driver>();
CarType car = new
CarType("Ferrari","2018",280,90,15);
Formula formula = new Formula(5);// number of
laps
long startTime = System.currentTimeMillis();
long currentTime = System.currentTimeMillis();
int totalDis = 0;
public static void main(String[] args)
{
RacingGame formulaRace = new
RacingGame();
formulaRace.player.add(new
Driver("Saleh",10,3));
formulaRace.formula.setDistance(20);//lap distance
formulaRace.totalDis =
formulaRace.formula.getTotalDistance();
formulaRace.formula.setDistance(formulaRace.totalDis);
formulaRace.raceStatus();
}
public void raceStatus()
{
int newSpeed = 0;
long diff = 0;
long sec = 0;
while (formula.distance >
0)
{
currentTime =
System.currentTimeMillis();
diff =
currentTime - startTime;
sec =
diff/1000;
newSpeed = (int)
sec * car.getAcceleration();
car.setSpeed((int)(newSpeed + (newSpeed*
((double)player.get(0).getExperince()/10) *
((double)player.get(0).getLevel()/100))));
int newDistance
= (int) (formula.distance - ((car.getSpeed()*sec))/3600);
formula.setDistance(newDistance);
int
traveledDistance = totalDis - newDistance;
System.out.println("Driver name: " + player.get(0).getPlayerName()
+ ", current Speed: " + car.getSpeed() + " km/h, Traveled distance:
" + traveledDistance + " km");
try {
TimeUnit.SECONDS.sleep(1);
} catch
(InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("Driver name: "
+ player.get(0).getPlayerName() + " finished the race in " + sec +
" seconds");
}
}
//Driver(String playerName, int year, int level, String
experienceType)
//CarType(String model, String year, int maxSpeed, int balance,
double acceleration)
Please find the answer below.
Please do comments in case of any issue. Also, don't forget to rate
the question. Thank You So Much.
Code execution flow is as below
package c11;
import java.util.*;
import java.util.concurrent.TimeUnit;
public class RacingGame {
//declare array list for the driver
ArrayList<Driver> player = new
ArrayList<Driver>();
//define class object car
CarType car = new CarType("Ferrari","2018",280,90,15);
//define class object of formula
Formula formula = new Formula(5);// number of laps
//get start time
long startTime = System.currentTimeMillis();
//get current time
long currentTime = System.currentTimeMillis();
//store total distance
int totalDis = 0;
//main function
public static void main(String[] args)
{
//start racing game
RacingGame formulaRace = new RacingGame();
//add player to formula race
formulaRace.player.add(new Driver("Saleh",10,3));
//set distance of 20
formulaRace.formula.setDistance(20);//lap distance
//get total distance
formulaRace.totalDis =
formulaRace.formula.getTotalDistance();
//set distance = total distance
formulaRace.formula.setDistance(formulaRace.totalDis);
//get race status
formulaRace.raceStatus();
}
//function race status
public void raceStatus()
{
//start speed to 0
int newSpeed = 0;
//set diff to 0
long diff = 0;
//set sec to 0
long sec = 0;
//while formula distnace is greater than zero
while (formula.distance > 0)
{
//get current time
currentTime = System.currentTimeMillis();
//get total time from start
diff = currentTime - startTime;
//get diff in seconds
sec = diff/1000;
//set new speed = sec * car acceleration
newSpeed = (int) sec * car.getAcceleration();
//set car speed according to experince and level
car.setSpeed((int)(newSpeed + (newSpeed*
((double)player.get(0).getExperince()/10) *
((double)player.get(0).getLevel()/100))));
//get new distance
int newDistance = (int) (formula.distance -
((car.getSpeed()*sec))/3600);
//set distance to formula
formula.setDistance(newDistance);
//get travel distance
int traveledDistance = totalDis - newDistance;
//print driver info
System.out.println("Driver name: " + player.get(0).getPlayerName()
+ ", current Speed: " + car.getSpeed() + " km/h, Traveled distance:
" + traveledDistance + " km");
try {
//wait for 1 second
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//print driver info
System.out.println("Driver name: " + player.get(0).getPlayerName()
+ " finished the race in " + sec + " seconds");
}
}