created Class_UserInterface
This commit is contained in:
		
							parent
							
								
									16d287e273
								
							
						
					
					
						commit
						77b5f4cbfb
					
				| 
						 | 
					@ -0,0 +1,94 @@
 | 
				
			||||||
 | 
					package ch.zhaw.pm2.racetrack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.beryx.textio.TextIO;
 | 
				
			||||||
 | 
					import org.beryx.textio.TextIoFactory;
 | 
				
			||||||
 | 
					import org.beryx.textio.TextTerminal;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class UserInterface {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final TextIO textIO;
 | 
				
			||||||
 | 
					    private final TextTerminal<?> textTerminal;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Opens a new Terminal Window and prints the welcome Text
 | 
				
			||||||
 | 
					     * @param welcomeText The Text which will be printed after the windows is opened.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public UserInterface(String welcomeText) {
 | 
				
			||||||
 | 
					        textIO = TextIoFactory.getTextIO();
 | 
				
			||||||
 | 
					        textTerminal = textIO.getTextTerminal();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        textTerminal.println(welcomeText + "\n");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * asks the user to choose one of the options given.
 | 
				
			||||||
 | 
					     * @param text Text which is printed befor the options are printed. Example: "Select Track file:"
 | 
				
			||||||
 | 
					     * @param options List with the options which can be selected.
 | 
				
			||||||
 | 
					     * @return the list index of the selected option
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public int selectOption(String text, List<String> options) {
 | 
				
			||||||
 | 
					        textTerminal.println(text + ":\n");
 | 
				
			||||||
 | 
					        for(int option = 0; option < options.size(); option ++) {
 | 
				
			||||||
 | 
					            textTerminal.println(" " + (option + 1) +  ": " + options.get(option));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return textIO.newIntInputReader().withMinVal(1).withMaxVal(options.size()).read("Enter your choice: ") - 1;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * gives information which player's turn it is and asks for the direction to accelerate
 | 
				
			||||||
 | 
					     * @param playingCarIndex the index of the player
 | 
				
			||||||
 | 
					     * @param playingCarID the ID of the player
 | 
				
			||||||
 | 
					     * @return the direction which is selected by the player. If null -> quit game
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public PositionVector.Direction selectDirection(int playingCarIndex, char playingCarID) {
 | 
				
			||||||
 | 
					        PositionVector.Direction direction = null;
 | 
				
			||||||
 | 
					        textTerminal.println("Playing Car " + playingCarIndex + ": " + playingCarIndex);
 | 
				
			||||||
 | 
					        textTerminal.println("Directions are based on the number pad:");
 | 
				
			||||||
 | 
					        textTerminal.println("7 8 9    7=up-left,    8=up,               9=up-right");
 | 
				
			||||||
 | 
					        textTerminal.println("4 5 6    4=left,       5=no acceleration,  6=right");
 | 
				
			||||||
 | 
					        textTerminal.println("1 2 3    1=down-left,  2=down,             3=down-right");
 | 
				
			||||||
 | 
					        textTerminal.println("\n10 = quit \n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        while (direction == null) { //asks until a valid input in entered
 | 
				
			||||||
 | 
					            int number = textIO.newIntInputReader().withMinVal(1).withMaxVal(10).read("choose your Acceleration direction: ");
 | 
				
			||||||
 | 
					            if (number == 10) { //quit game
 | 
				
			||||||
 | 
					                return null;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            direction = getDirection(number);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return direction;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * returns the the associated direction Object
 | 
				
			||||||
 | 
					     * @param number the number which was typed by the user
 | 
				
			||||||
 | 
					     * @return the associated direction. If null -> unknown number
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private PositionVector.Direction getDirection(int number) {
 | 
				
			||||||
 | 
					        return switch (number) {
 | 
				
			||||||
 | 
					            case 1 -> PositionVector.Direction.DOWN_LEFT;
 | 
				
			||||||
 | 
					            case 2 -> PositionVector.Direction.DOWN;
 | 
				
			||||||
 | 
					            case 3 -> PositionVector.Direction.DOWN_RIGHT;
 | 
				
			||||||
 | 
					            case 4 -> PositionVector.Direction.LEFT;
 | 
				
			||||||
 | 
					            case 5 -> PositionVector.Direction.NONE;
 | 
				
			||||||
 | 
					            case 6 -> PositionVector.Direction.RIGHT;
 | 
				
			||||||
 | 
					            case 7 -> PositionVector.Direction.UP_LEFT;
 | 
				
			||||||
 | 
					            case 8 -> PositionVector.Direction.UP;
 | 
				
			||||||
 | 
					            case 9 -> PositionVector.Direction.UP_RIGHT;
 | 
				
			||||||
 | 
					            default -> null;
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * prints the given Track in the terminal
 | 
				
			||||||
 | 
					     * @param track the track which should be printed
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public void printTrack(Track track) {
 | 
				
			||||||
 | 
					            textTerminal.println(track.toString());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue