2024-04-29 21:06:04 +02:00
|
|
|
package tui;
|
|
|
|
|
|
|
|
import fassade.KniffelSystem;
|
|
|
|
|
2024-05-04 21:06:05 +02:00
|
|
|
import java.util.ArrayList;
|
2024-04-29 21:06:04 +02:00
|
|
|
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!");
|
2024-04-30 12:46:42 +02:00
|
|
|
|
2024-05-05 18:12:50 +02:00
|
|
|
// while (true){
|
|
|
|
// mainMenuOutput();
|
|
|
|
// }
|
2024-04-30 12:46:42 +02:00
|
|
|
|
|
|
|
|
|
|
|
// DEV:
|
2024-05-05 18:12:50 +02:00
|
|
|
gameSystem = new KniffelSystem();
|
2024-05-06 02:35:10 +02:00
|
|
|
gameSystem.creteDevPlayers(6);
|
2024-05-05 18:12:50 +02:00
|
|
|
gameLoop();
|
2024-04-29 21:06:04 +02:00
|
|
|
}
|
|
|
|
|
2024-05-06 02:35:10 +02:00
|
|
|
private static void mainMenuOutput(){
|
2024-04-29 21:06:04 +02:00
|
|
|
System.out.println("What do you want to do?");
|
|
|
|
System.out.println("1 - Play");
|
2024-04-30 12:46:42 +02:00
|
|
|
System.out.println("2 - See leaderboard");
|
2024-04-29 21:06:04 +02:00
|
|
|
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"))
|
2024-04-30 12:46:42 +02:00
|
|
|
|| (mainMenuUserInput.equals("see leaderboard"))
|
2024-04-29 21:06:04 +02:00
|
|
|
|| (mainMenuUserInput.equals("see"))
|
2024-04-30 12:46:42 +02:00
|
|
|
|| (mainMenuUserInput.equals("leaderboard"))){
|
|
|
|
mainMenuLeaderBoard();
|
2024-04-29 21:06:04 +02:00
|
|
|
}
|
|
|
|
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);
|
2024-04-30 12:46:42 +02:00
|
|
|
|
2024-04-29 21:06:04 +02:00
|
|
|
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);
|
|
|
|
}
|
2024-05-04 21:06:05 +02:00
|
|
|
|
|
|
|
gameLoop();
|
2024-04-29 21:06:04 +02:00
|
|
|
}
|
|
|
|
|
2024-04-30 12:46:42 +02:00
|
|
|
private static void gameLoop(){
|
|
|
|
String[] playerStrings = gameSystem.getAllPlayerStrings();
|
|
|
|
|
2024-05-04 21:06:05 +02:00
|
|
|
System.out.println("Participating players:");
|
2024-04-30 12:46:42 +02:00
|
|
|
for (String player : playerStrings){
|
|
|
|
System.out.println(player);
|
|
|
|
}
|
2024-05-04 21:06:05 +02:00
|
|
|
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<Integer> rolls = new ArrayList<Integer>();
|
|
|
|
String keptDice = "";
|
|
|
|
|
|
|
|
while(rollscount < 3){
|
|
|
|
rolls = gameSystem.rollDices(rolls, keptDice);
|
|
|
|
String newRollsString = diceArrToString(rolls);
|
|
|
|
System.out.println(newRollsString);
|
2024-05-06 02:35:10 +02:00
|
|
|
String evaluatedRolls = gameSystem.evaluateRoll(rolls);
|
|
|
|
System.out.println(evaluatedRolls);
|
2024-05-04 21:06:05 +02:00
|
|
|
|
2024-05-05 18:12:50 +02:00
|
|
|
|
2024-05-06 02:35:10 +02:00
|
|
|
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();
|
|
|
|
}
|
2024-05-05 18:12:50 +02:00
|
|
|
|
2024-05-06 02:35:10 +02:00
|
|
|
rollscount++;
|
2024-05-05 18:12:50 +02:00
|
|
|
}
|
|
|
|
|
2024-05-06 02:35:10 +02:00
|
|
|
writeToSheet();
|
2024-05-05 18:12:50 +02:00
|
|
|
|
2024-05-06 02:35:10 +02:00
|
|
|
turncounter = triggerNextTurn(turncounter);
|
2024-05-05 18:12:50 +02:00
|
|
|
}
|
2024-05-04 21:06:05 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2024-05-06 02:35:10 +02:00
|
|
|
private static void writeToSheet(){
|
|
|
|
System.out.println("Which row do you want to fill?");
|
|
|
|
System.out.print(">");
|
|
|
|
String sheetInput = sc.nextLine();
|
|
|
|
gameSystem.writeToSheet(sheetInput);
|
2024-05-05 18:12:50 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2024-05-04 21:06:05 +02:00
|
|
|
private static String diceArrToString(ArrayList<Integer> diceArr){
|
|
|
|
StringBuilder sb = new StringBuilder();
|
2024-05-06 02:35:10 +02:00
|
|
|
sb.append("Throwing dice... \n");
|
2024-05-04 21:06:05 +02:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-04-30 12:46:42 +02:00
|
|
|
private static void mainMenuLeaderBoard(){
|
|
|
|
gameSystem = new KniffelSystem(); // Scorboard System
|
|
|
|
System.out.println(gameSystem.LeaderBaordData()); // TODO
|
2024-04-29 21:06:04 +02:00
|
|
|
}
|
|
|
|
|
2024-05-04 21:06:05 +02:00
|
|
|
|
2024-04-29 21:06:04 +02:00
|
|
|
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();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|