CEN-3024-Code-Implementation/SelfDrivingRoadtrip.java

252 lines
10 KiB
Java

import java.util.Scanner;
public class SelfDrivingRoadtrip {
public static void main(String[] args) {
Vehicle myVehicle = new Vehicle();
Entertainment nowPlaying = new Entertainment();
Climate climate = new Climate();
Scanner userInput = new Scanner(System.in);
int userSelection = -1;
while (userSelection != 0) {
userSelection = -1;
System.out.print("\033[H\033[2J");
//Show current destination on main menu
System.out.print("Current Destination: ");
if (myVehicle.currentRoute.currentDestination.getDestinationAddress() != null) {
System.out.print(myVehicle.currentRoute.currentDestination.getDestinationAddress() + "\n");
} else {System.out.print("None Selected\n");}
//Show current route on main menu
System.out.print("Current Route: ");
if (myVehicle.currentRoute.getRouteSelected() == -1) {
System.out.print("None Selected\n");
} else {
String[] routes = myVehicle.currentRoute.enumRoutes();
String[] splitNames = routes[myVehicle.currentRoute.getRouteSelected()].split("\n");
System.out.print(splitNames[0] + "\n");
}
//Show current fuel level on main menu
System.out.printf("Fuel Level: %.0f%%\n", myVehicle.getFuelLevel()*100);
//Show current media source on Main Menu
System.out.print("Now Playing: " + nowPlaying.getMetadata() + "\n\n");
mainMenu();
userSelection = userInput.nextInt();
switch (userSelection) {
case 1: //destination selection menu
while (userSelection != 0) {
destinationMenu();
userSelection = userInput.nextInt();
if (userSelection == 0) {
userSelection = -1;
break;
}
else if (userSelection == 1) {
System.out.println("Destination 1 selected");
myVehicle.currentRoute.setRouteDestination("250 Community College Pkwy SE, Palm Bay, FL 32909");
userSelection = -1;
HelperFunctions.sleep(3);
break;
} else {
System.out.println("Please select a valid option.");
userSelection = -1;
HelperFunctions.sleep(3);
}
}
break;
case 2: //route selection menu
if (myVehicle.currentRoute.currentDestination.getDestinationAddress() == null) {
System.out.println("Please select a destination first.");
userSelection = -1;
break;
}
while (userSelection != 0) {
routesMenu(myVehicle.currentRoute.enumRoutes());
userSelection = userInput.nextInt();
if (userSelection == 0) {
userSelection = -1;
break;
}
else if (userSelection <= myVehicle.currentRoute.countRoutesAvailable()) {
myVehicle.currentRoute.selectRoute(userSelection - 1);
System.out.println("Route " + userSelection + " selected");
userSelection = -1;
HelperFunctions.sleep(3);
break;
} else {
System.out.println("Please select a valid option.");
userSelection = -1;
HelperFunctions.sleep(3);
}
}
break;
case 3: //start navigation
System.out.println("Start navigation");
myVehicle.run();
System.out.println("Navigation complete, destination reached.");
HelperFunctions.pressEnterToContinue();
break;
case 4: //entertainment controls
while (userSelection != 0) {
entertainmentMenu();
userSelection = userInput.nextInt();
if (userSelection == 0) {
userSelection = -1;
break;
} else if (userSelection == 1) {
nowPlaying.selectSource("RADIO", "FM 104.1");
userSelection = -1;
break;
} else if (userSelection == 2) {
nowPlaying.selectSource("AUX", "AUX Input");
userSelection = -1;
break;
} else if (userSelection == 3) {
nowPlaying.selectSource("BLUETOOTH", "Bluetooth Device");
userSelection = -1;
break;
} else {
System.out.println("Please select a valid option");
userSelection = -1;
}
}
break;
case 5: //climate controls
while (userSelection != 0) {
climateMenu();
userSelection = -1;
userSelection = userInput.nextInt();
if (userSelection == 0) {
userSelection = -1;
break;
} else if (userSelection == 1) {
userSelection = -1;
climateTempMenu(climate.getCurrentTemps(), climate.getTargetTemps());
userSelection = userInput.nextInt();
if (userSelection == 0) {
userSelection = -1;
} else if (userSelection == 1) {
System.out.print("Enter new left target temp (65-90F): ");
climate.setTargetTemp(userInput.nextInt(), climate.getTargetTemps()[1]);
} else if (userSelection == 2) {
System.out.print("Enter new right target temp (65-90F): ");
climate.setTargetTemp(climate.getTargetTemps()[0], userInput.nextInt());
}
} else if (userSelection == 2) {
userSelection = -1;
climateFanMenu(climate.getFanSpeeds());
userSelection = userInput.nextInt();
if (userSelection == 0) {
userSelection = -1;
} else if (userSelection == 1) {
userSelection = -1;
climateFanSpeedMenu();
userSelection = userInput.nextInt();
climate.setFanSpeeds(Integer.toString(userSelection), climate.getFanSpeeds()[1]);
} else if (userSelection == 2) {
userSelection = -1;
climateFanSpeedMenu();
userSelection = userInput.nextInt();
climate.setFanSpeeds(climate.getFanSpeeds()[0], Integer.toString(userSelection));
}
} else if (userSelection == 3) {
userSelection = -1;
climate.run();
}
}
}
}
userInput.close();
}
public static void mainMenu() {
System.out.println("Main Menu\n=========\n");
System.out.println("1. Set Destination");
System.out.println("2. Select Route");
System.out.println("3. Start Navigation");
System.out.println("4. Entertainment Controls");
System.out.println("5. Climate Controls");
System.out.println("0. Turn Off");
System.out.print("\nSelection: ");
}
public static void destinationMenu() {
System.out.print("\033[H\033[2J");
System.out.println("Destinations\n=============\n");
System.out.println("Select a Destination\n");
System.out.println("0. Go Back");
System.out.println("1. EFSC Palm Bay Campus\n 250 Community College Pkwy SE, Palm Bay, FL 32909");
System.out.print("\nSelection: ");
}
public static void routesMenu(String[] routes) {
System.out.print("\033[H\033[2J");
System.out.println("Routes Available\n================\n");
System.out.println("Select a Route\n");
System.out.println("0. Go Back");
for (String el : routes) {
System.out.println(el);
}
System.out.print("\nSelection: ");
}
public static void entertainmentMenu() {
System.out.print("\033[H\033[2J");
System.out.println("Media\n=====\n");
System.out.println("Select a Source\n");
System.out.println("0. Go Back");
System.out.println("1. Radio");
System.out.println("2. AUX");
System.out.println("3. Bluetooth");
System.out.print("\nSelection: ");
}
public static void climateMenu() {
System.out.print("\033[H\033[2J");
System.out.println("Climate Controls\n===============\n");
System.out.println("Select an option\n");
System.out.println("0. Go Back");
System.out.println("1. Set Temperature");
System.out.println("2. Set Fan Speed");
System.out.println("3. Run Climate Adjustments"); //only necessary while application is non-concurrent
System.out.print("\nSelection: ");
}
public static void climateTempMenu(int[] currentTemps, int[] targetTemps) {
System.out.print("\033[H\033[2J");
System.out.println("Temperature Controls\n===================\n");
System.out.println("Select an option\n");
System.out.println("0. Go Back");
System.out.println("1. Set Left Temperature | Current: " + currentTemps[0] + "; Set: " + targetTemps[0]);
System.out.println("2. Set Right Temperature | Current: " + currentTemps[1] + "; Set: " + targetTemps[1]);
System.out.print("\nSelection: ");
}
public static void climateFanMenu(String[] speeds) {
System.out.print("\033[H\033[2J");
System.out.println("Fan Controls\n============\n");
System.out.println("Select an option\n");
System.out.println("0. Go Back");
System.out.println("1. Set Left Fan Speed | Current: " + speeds[0]);
System.out.println("2. Set Right Fan Speed | Current: " + speeds[1]);
System.out.print("\nSelection: ");
}
public static void climateFanSpeedMenu() {
System.out.print("\033[H\033[2J");
System.out.println("Set Fan Speed\n=============\n");
System.out.println("Select an option\n");
System.out.println("0. Go Back");
System.out.println("1. OFF");
System.out.println("2. LOW");
System.out.println("3. MED");
System.out.println("4. HI");
System.out.print("\nSelection: ");
}
}