package tui; import fassade.KniffelSystem; import java.util.ArrayList; import java.util.Scanner; public class TUI { static KniffelSystem gameSystem; static Scanner sc = new Scanner(System.in); public static void main(String[] args) { System.out.println("Welcome to the PR2 Kniffel game!"); // while (true){ // mainMenuOutput(); // } // DEV: gameSystem = new KniffelSystem(); gameSystem.creteDevPlayers(6); gameLoop(); } private static void mainMenuOutput(){ System.out.println("What do you want to do?"); System.out.println("1 - Play"); System.out.println("2 - See leaderboard"); System.out.println("3 - Exit"); System.out.print("> "); String mainMenuUserInput = sc.nextLine().toLowerCase(); if ((mainMenuUserInput.equals("1")) || (mainMenuUserInput.equals("play"))){ mainMenuPlay(); } else if ((mainMenuUserInput.equals("2")) || (mainMenuUserInput.equals("see leaderboard")) || (mainMenuUserInput.equals("see")) || (mainMenuUserInput.equals("leaderboard"))){ mainMenuLeaderBoard(); } else { mainMenuExit(); } } private static void mainMenuPlay(){ gameSystem = new KniffelSystem(); System.out.println("How many players are you? (1-6)"); System.out.print("> "); String mainMenuPlayAmountPlayersInput = sc.nextLine().toLowerCase(); int amountPlayers = Integer.parseInt(mainMenuPlayAmountPlayersInput); for (int i = 0; i < amountPlayers; i++){ System.out.printf("Player %d: ", i + 1); System.out.println("Enter your name: "); System.out.print("> "); String playerName = sc.nextLine(); String coloredPlayerName = gameSystem.addPlayer(i+1, playerName); System.out.printf("Welcome %s! \n\n", coloredPlayerName); } gameLoop(); } private static void gameLoop(){ String[] playerStrings = gameSystem.getAllPlayerStrings(); System.out.println("Participating players:"); for (String player : playerStrings){ System.out.println(player); } System.out.println(); int turncounter = 0; int rollscount; while (true){ rollscount = 0; // System.out.printf("Turn Nr.%d\n", turncounter); System.out.printf("It's your turn %s!\n\n", gameSystem.getCurrentPlayer()); ArrayList rolls = new ArrayList(); String keptDice = ""; while(rollscount < 3){ rolls = gameSystem.rollDices(rolls, keptDice); String newRollsString = diceArrToString(rolls); System.out.println(newRollsString); String evaluatedRolls = gameSystem.evaluateRoll(rolls); System.out.println(evaluatedRolls); if (rollscount < 2) { System.out.println("Which dice do you want to keep?"); System.out.println("Empty for none, single digit for one dice or (1,3,4) for multiple dice."); System.out.print("> "); keptDice = sc.nextLine(); } rollscount++; } writeToSheet(); turncounter = triggerNextTurn(turncounter); } } private static void writeToSheet(){ System.out.println("Which row do you want to fill?"); System.out.print(">"); String sheetInput = sc.nextLine(); gameSystem.writeToSheet(sheetInput); } private static String diceArrToString(ArrayList diceArr){ StringBuilder sb = new StringBuilder(); sb.append("Throwing dice... \n"); sb.append("Your rolls: \n"); for (int i = 0; i < diceArr.size(); i++){ sb.append(String.format("Dice %d: %s \n", i+1, Integer.toString(diceArr.get(i)))); } return sb.toString(); } private static int triggerNextTurn(int turnCounter){ turnCounter++; System.out.print("Next turn? \n"); System.out.print("> "); sc.nextLine(); gameSystem.nextPlayer(); return turnCounter; } private static void mainMenuLeaderBoard(){ gameSystem = new KniffelSystem(); // Scorboard System System.out.println(gameSystem.LeaderBaordData()); // TODO } private static void mainMenuExit(){ System.out.println("Do you really want to exit? (Y/n)"); System.out.print("> "); String mainMenuExitUserInput = sc.nextLine().toLowerCase(); if ((mainMenuExitUserInput.equals("y")) || (mainMenuExitUserInput.equals("yes")) || mainMenuExitUserInput.isBlank()){ System.out.print("Exiting, see you next time!"); System.exit(0); } else { System.out.println("Returning to main menu"); System.out.println(); mainMenuOutput(); } } }