package fassade; import domain.Game; import domain.Player; import java.util.ArrayList; import java.util.Arrays; import java.util.Random; public class KniffelSystem { ArrayList playerColors; Game game; public KniffelSystem(){ game = new Game(); playerColors = new ArrayList<>(Arrays.asList( "\u001B[31m", // Quelle 2 Anfang "\u001B[32m", // "\u001B[34m", // "\u001B[33m", // "\u001B[36m")); // Quelle 2 Ende } public String LeaderBaordData(){ return "Leaderboard - TODO \n"; } public String addPlayer(int playerNumber, String name) { String playerColor = colorPicker(playerNumber); Player playerToAdd = new Player(playerNumber, name, playerColor, 0); game.addPlayer(playerToAdd); return changePlayerNameColor(name, playerColor); } private String changePlayerNameColor(String name, String color){ String ANSI_RESET = "\u001B[0m"; return String.format(color + name + ANSI_RESET); } private String colorPicker(int playerNumber){ if (playerNumber == 1){ return "\u001B[35m"; // Quelle 2 } Random rand = new Random(); // Quelle 1 Anfang int randomIndex = rand.nextInt(playerColors.size()); // return playerColors.remove(randomIndex); // Quelle 1 Ende } public String getCurrentPlayer(){ return game.getCurrentPlayer().toString(); } public void nextPlayer(){ game.nextTurn(); } // TEST public void createTestPlayers(int amountPlayer){ String[] names = {"Vic", "Nastja", "Lilli", "Emelie", "Esra", "Oli"}; for (int i = 0; i < amountPlayer; i++){ addPlayer(i+1, names[i]); } } public ArrayList rollDices(ArrayList rolls, String keptDice){ ArrayList oldRolls = extractKeptDice(rolls, keptDice); int amountNewRolls = oldRolls.size(); ArrayList newRolls = rollMultipleDice(5 - amountNewRolls); // --TEST System.out.println("Old rolls:"); for(int oldRoll: oldRolls){ System.out.println(oldRoll); } System.out.println("New Rolls:"); for(int newRoll: newRolls){ System.out.println(newRoll); } System.out.println(); // TEST-- oldRolls.addAll(newRolls); return oldRolls; } private ArrayList extractKeptDice(ArrayList previousRolls, String keptDice){ ArrayList keptRolls = new ArrayList(); if (keptDice.isEmpty()){ return keptRolls; } if (keptDice.length() == 1){ int singleIndex = Integer.parseInt(keptDice); keptRolls.add(previousRolls.get(singleIndex - 1)); return keptRolls; } keptDice = keptDice.replaceAll("\\s+",""); keptDice = keptDice.substring(1, keptDice.length()-1); System.out.printf("Edited keptDice String: %s \n", keptDice); // TEST String[] keptDiceIndicesStrings = keptDice.split(","); for (String keptDiceIndicesString : keptDiceIndicesStrings) { int index = Integer.parseInt(keptDiceIndicesString); keptRolls.add(previousRolls.get(index - 1)); } return keptRolls; } private ArrayList rollMultipleDice(int amountRolls){ System.out.printf("Amount rolls: %d \n", amountRolls); // TEST ArrayList rolls = new ArrayList<>(); if (amountRolls == 0){ return rolls; } for (int i = 0; i < amountRolls; i++){ rolls.add(game.rollDice()); } return rolls; } // TEST public String[] getAllPlayerStrings(){ ArrayList players = game.getPlayers(); String[] returnStrings = new String[players.size()]; for (int i = 0; i < players.size(); i++){ returnStrings[i] = players.get(i).toString(); } return returnStrings; } }