175 lines
3.8 KiB
Java
175 lines
3.8 KiB
Java
package Vehicles;
|
|
|
|
public class Sport extends Vehicle {
|
|
private int topSpeed;
|
|
|
|
public enum GearNumbers {
|
|
R,
|
|
N,
|
|
GEAR_1,
|
|
GEAR_2,
|
|
GEAR_3,
|
|
GEAR_4,
|
|
GEAR_5,
|
|
GEAR_6
|
|
}
|
|
|
|
private GearNumbers gear;
|
|
|
|
public Sport(String make, String model, int year, int topSpeed) {
|
|
super(make, model, year);
|
|
this.topSpeed = topSpeed;
|
|
this.typeOfEngine = getManualEngineType();
|
|
this.doors = 2;
|
|
this.gear = this.setGear(0);
|
|
}
|
|
|
|
private GearNumbers setGear(int gear) {
|
|
switch (gear) {
|
|
case -1:
|
|
return GearNumbers.R;
|
|
case 0:
|
|
return GearNumbers.N;
|
|
case 1:
|
|
return GearNumbers.GEAR_1;
|
|
case 2:
|
|
return GearNumbers.GEAR_2;
|
|
case 3:
|
|
return GearNumbers.GEAR_3;
|
|
case 4:
|
|
return GearNumbers.GEAR_4;
|
|
case 5:
|
|
return GearNumbers.GEAR_5;
|
|
case 6:
|
|
return GearNumbers.GEAR_6;
|
|
default:
|
|
return GearNumbers.N;
|
|
}
|
|
}
|
|
|
|
public double getTopSpeed() {
|
|
if (this.gear == GearNumbers.N || this.gear == GearNumbers.R) {
|
|
return 0;
|
|
}
|
|
switch (this.gear) {
|
|
case GEAR_1:
|
|
return topSpeed * 0.2;
|
|
case GEAR_2:
|
|
return topSpeed * 0.35;
|
|
case GEAR_3:
|
|
return topSpeed * 0.5;
|
|
case GEAR_4:
|
|
return topSpeed * 0.65;
|
|
case GEAR_5:
|
|
return topSpeed * 0.8;
|
|
case GEAR_6:
|
|
return topSpeed;
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public String forward() {
|
|
if (this.gear == GearNumbers.N) {
|
|
this.changeGearUp();
|
|
} else if (this.gear == GearNumbers.R) {
|
|
this.gear = this.setGear(1);
|
|
}
|
|
return "The sport vehicle is zooming forward at high speed!";
|
|
}
|
|
|
|
@Override
|
|
public String reverse() {
|
|
if (this.gear != GearNumbers.R) {
|
|
this.gear = this.setGear(-1);
|
|
}
|
|
return "The sport vehicle is reversing quickly!";
|
|
}
|
|
|
|
@Override
|
|
public String stop() {
|
|
if (this.gear != GearNumbers.N) {
|
|
this.setGearToNeutral();
|
|
}
|
|
return "The sport vehicle screeches to a halt!";
|
|
}
|
|
|
|
public String drift() {
|
|
if (this.gear == GearNumbers.N || this.gear == GearNumbers.R) {
|
|
return "Cannot drift while in Neutral or Reverse gear!";
|
|
}
|
|
return "The sport vehicle is drifting around the corner!";
|
|
}
|
|
|
|
public String nitroBoost() {
|
|
if (this.gear == GearNumbers.N || this.gear == GearNumbers.R) {
|
|
return "Cannot activate nitro boost while in Neutral or Reverse gear!";
|
|
}
|
|
if (this.gear != GearNumbers.GEAR_6) {
|
|
this.gear = this.setGear(6);
|
|
}
|
|
return "The sport vehicle activates nitro boost for extra speed!";
|
|
}
|
|
|
|
public void changeGearUp() {
|
|
switch (this.gear) {
|
|
case R:
|
|
this.gear = this.setGear(0);
|
|
break;
|
|
case N:
|
|
this.gear = this.setGear(1);
|
|
break;
|
|
case GEAR_1:
|
|
this.gear = this.setGear(2);
|
|
break;
|
|
case GEAR_2:
|
|
this.gear = this.setGear(3);
|
|
break;
|
|
case GEAR_3:
|
|
this.gear = this.setGear(4);
|
|
break;
|
|
case GEAR_4:
|
|
this.gear = this.setGear(5);
|
|
break;
|
|
case GEAR_5:
|
|
this.gear = this.setGear(6);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public GearNumbers getGear() {
|
|
return this.gear;
|
|
}
|
|
|
|
public void changeGearDown() {
|
|
switch (this.gear) {
|
|
case GEAR_6:
|
|
this.gear = this.setGear(5);
|
|
break;
|
|
case GEAR_5:
|
|
this.gear = this.setGear(4);
|
|
break;
|
|
case GEAR_4:
|
|
this.gear = this.setGear(3);
|
|
break;
|
|
case GEAR_3:
|
|
this.gear = this.setGear(2);
|
|
break;
|
|
case GEAR_2:
|
|
this.gear = this.setGear(1);
|
|
break;
|
|
case GEAR_1:
|
|
this.gear = this.setGear(1);
|
|
break;
|
|
case N:
|
|
this.gear = this.setGear(-1);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public void setGearToNeutral() {
|
|
this.gear = GearNumbers.N;
|
|
}
|
|
}
|