Files
MSCS535_Assignment6/src/Vehicles/Sport.java
Carlos Gutierrez 29d6b7c97e feat: adding vehicle classes and main program
The classes are on Vehicles folder and being used in Main.java file.
2026-01-25 16:23:01 -05:00

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;
}
}