private void manageDiscardTreasures(boolean visible, Player aPlayer) { int howMany; int option; do { // Se descartan tesoros hasta que se vuelve al menú anterior if (visible) { howMany = showTreasures( "Elige tesoros visibles para descartar", aPlayer.getVisibleTreasures(), true); } else { howMany = showTreasures( "Elige tesoros ocultos para descartar", aPlayer.getHiddenTreasures(), true); } option = getTreasure(howMany); if (option > Command.GoBack.menu) { if (visible) { game.discardVisibleTreasures( new ArrayList(Arrays.asList(aPlayer.getVisibleTreasures().get(option)))); } else { game.discardHiddenTreasures( new ArrayList(Arrays.asList(aPlayer.getHiddenTreasures().get(option)))); } } } while (option != Command.GoBack.menu); }
public void play(Napakalaki aGame, int numberOfPlayers) { Command command; CombatResult combatResult; Player currentPlayer; ArrayList<String> names; game = aGame; names = getPlayerNames(numberOfPlayers); System.out.print("delante initgame\n"); game.initGame(names); System.out.print("pasa initgame\n"); do { // Mientras dure la partida currentPlayer = game.getCurrentPlayer(); do { // Mientras el jugador se decide a conocer al monstruo System.out.println("******* ******* ******* ******* ******* ******* *******"); System.out.println("\n\n Turno de: " + currentPlayer.toString()); command = getCommandBeforeKnowingMonster(); command = processCommand(command, currentPlayer); } while (command != Command.Exit && command != Command.ShowMonster); if (command == Command.ShowMonster) { do { // Mientras el jugador se decida a combatir System.out.println("******* ******* ******* ******* ******* ******* *******"); System.out.println("\n\n Turno de: " + currentPlayer.toString()); command = getCommandBeforeFighting(); command = processCommand(command, currentPlayer); } while (command != Command.Exit && command != Command.Combat); if (command == Command.Combat) { combatResult = game.developCombat(); switch (combatResult) { case WINGAME: System.out.println("\n\n " + currentPlayer.getName()); System.out.println("\n\n ¡¡¡ H A S G A N A D O L A P A R T I D A !!!"); break; case WIN: System.out.println("\n\n Ganaste el combate"); break; case LOSE: System.out.println("\n\n Has perdido el combate, te toca cumplir el mal rollo"); break; } if (combatResult != CombatResult.WINGAME) { do { // Hasta que se avance de turno System.out.println("******* ******* ******* ******* ******* ******* *******"); System.out.println("\n\n Turno de: " + currentPlayer.toString()); if (currentPlayer.canISteal()) command = getCommandAfterFighting(); else command = getCommandAfterFightingNoSteal(); command = processCommand(command, currentPlayer); } while (command != Command.Exit && command != Command.NextTurnAllowed); } else { command = Command.Exit; } } // if (command == Command.Combat) } // if (command == Command.ShowMonster) } while (command != Command.Exit); // Mientras dure la partida }
private Command processCommand(Command command, Player aPlayer) { Treasure aTreasure; switch (command) { case Exit: break; case Combat: break; case ShowMonster: System.out.println("\n------- ------- ------- ------- ------- ------- ------- "); System.out.println("El monstruo actual es:\n\n" + game.getCurrentMonster().toString()); break; case ShowVisibleTreasure: showTreasures("Esta es tu lista de tesoros visibles", aPlayer.getVisibleTreasures(), false); break; case ShowHiddenTreasure: showTreasures("Esta es tu lista de tesoros ocultos", aPlayer.getHiddenTreasures(), false); break; case MakeTreasureVisible: manageMakeTreasureVisible(aPlayer); break; case DiscardVisibleTreasure: manageDiscardTreasures(true, aPlayer); break; case DiscardHiddenTreasure: manageDiscardTreasures(false, aPlayer); break; case DiscardAll: aPlayer.discardAllTreasures(); break; case StealTreasure: aTreasure = aPlayer.stealTreasure(); if (aTreasure == null) System.out.println("\n\n No has podido robar nada \n\n"); else System.out.println("\n\n Has robado este tesoro: \n\n" + aTreasure.toString()); break; case NextTurn: if (!game.nextTurn()) { System.out.println("\n\n ERROR \n"); System.out.println("No cumples las condiciones para pasar de turno."); System.out.println("O bien tienes más de 4 tesoros ocultos"); System.out.println("O bien te queda mal rollo por cumplir"); } else { command = Command.NextTurnAllowed; } break; } return command; }