public static void main(String[] args) { int p1Score = 0; int p2Score = 0; while (true) { System.out.println("P1:" + p1Score + " P2:" + p2Score); Trainer player1 = new Trainer(null, 0, "AI", 1000); Trainer player2 = new Trainer(null, 0, "AI-2", 1000); String player1Move = null; String player2Move = null; for (int i = 0; i < 10; i++) { if (player2Move != null) { player1.updateBoard(player2Move); } player1Move = player1.makeMove(); // System.out.println("P1:" + player1Move); player2.updateBoard(player1Move); player2Move = player2.makeMove(); // System.out.println("P2:" + player2Move); } player1.updateBoard(player2Move); // Always score grid using 1, becuase to player 2 they are still the primary player int player2Score = Scorer.score(player2.getGrid(), 1); if (player2Score < 500001) { p1Score++; } else { p2Score++; } player1.endGame(player2Score < 500001); player2.endGame(player2Score >= 500001); } }
public void executeMoves() { MoveOrder attackOrder = resolveTurnOrder(player, opponent); // choose attacks player.setChosenAction(chooseAttack(player)); opponent.setChosenAction(chooseAttack(opponent)); // get order for always correct sequential attacking Trainer firstP = (attackOrder.getFirst()); Move firstPM = (attackOrder.getFirst().getChosenAction()); Trainer secondP = (attackOrder.getSecond()); Move secondPM = (attackOrder.getSecond().getChosenAction()); if (firstPM.getCat().toUpperCase().equals("PHYSICAL")) { attack(firstP.getPokemon(), firstPM, secondP.getPokemon()); } else if (firstPM.getCat().toUpperCase().equals("STATUS")) { stat(firstPM, secondP.getPokemon()); } else if (firstPM.getName().toUpperCase().equals("USEPOTION")) { heal(firstP); } if (secondPM.getCat().toUpperCase().equals("PHYSICAL")) { attack(secondP.getPokemon(), secondPM, firstP.getPokemon()); } else if (secondPM.getCat().toUpperCase().equals("STATUS")) { stat(secondPM, firstP.getPokemon()); } else if (secondPM.getName().toUpperCase().equals("USEPOTION")) { heal(secondP); } }
public static void main(String[] args) { if (args.length < 2) { usage(); } String cookedExampleFile = args[0]; String outputParamFile = args[1]; int epochs = 5; int threads = 4; boolean traceLosses = false; boolean roundRobin = false; if (args.length > 2) { for (int i = 2; i < args.length; i++) { if ("--epochs".equals(args[i])) { if (i + 1 < args.length) epochs = Integer.parseInt(args[++i]); else usage(); } else if ("--traceLosses".equals(args[i])) { traceLosses = true; } else if ("--threads".equals(args[i])) { if (i + 1 < args.length) threads = Integer.parseInt(args[++i]); else usage(); } else if ("--rr".equals(args[i])) { roundRobin = true; } else usage(); } } // L2PosNegLossTrainedSRW<String> srw = new L2PosNegLossTrainedSRW<String>(); // Trainer<String> trainer = new MultithreadedTrainer<String>(srw,threads); // Map<String,Double> paramVec = trainer.trainParametersOnCookedIterator( // trainer.importCookedExamples(cookedExampleFile, new // AnnotatedGraphFactory<String>(AnnotatedGraphFactory.STRING)), // epochs, // traceLosses); // wait for keypress // System.out.println("Press any key to start."); // Reader in = new InputStreamReader(System.in); // try { // in.read(); // } catch (IOException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // System.exit(1); // } L2PosNegLossTrainedSRW srw = new L2PosNegLossTrainedSRW(); Trainer trainer = null; if (roundRobin) { trainer = new MultithreadedRRTrainer(srw, threads); } else { trainer = new MultithreadedTrainer(srw, threads); } // Trainer trainer = new MultithreadedTrainer(srw,threads); Map<String, Double> paramVec = trainer.trainParametersOnCookedIterator( trainer.importCookedExamples(cookedExampleFile), epochs, traceLosses); Dictionary.save(paramVec, outputParamFile); }
public void printVerdict() { if (player.getPokemon().getHp() > 0 && opponent.getPokemon().getHp() < 0) { System.out.println("Gary's pokemon fainted!"); System.out.println("You win!"); } else if (player.getPokemon().getHp() < 0 && opponent.getPokemon().getHp() > 0) { System.out.println("Your pokemon fainted!"); System.out.println("You lost! I hope you saved your game..."); } }
public void heal(Trainer trainer) { System.out.println(trainer.getName() + " is using a potion!"); wait(600); if (trainer.getPotionAmount() == 0) { System.out.println("Tried to use a potion but didn't have any!"); wait(600); } else { trainer.usePotion(); } }
public void drawSituation() { wait(600); System.out.println("\n"); wait(50); System.out.println("|---------------------------------------|"); wait(50); System.out.println( "| " + opponent.getName() + "'s " + opponent.getPokemonName() + " HP:" + opponent.getPokemon().getHp() + " \t\t|"); wait(50); System.out.println("|\t\t\t\t\t|"); wait(50); System.out.println("|\t\t(-o-)\t\t |"); wait(50); System.out.println("|\t\t\t\t\t|"); wait(50); System.out.println( "|\t" + player.getName() + "'s " + player.getPokemonName() + " HP:" + player.getPokemon().getHp() + " \t\t|"); wait(50); System.out.println("|---------------------------------------|"); wait(50); System.out.println("\n"); wait(50); }
@Override protected void setUpExamples(int epoch, Collection<PosNegRWExample> examples) { super.setUpExamples(epoch, examples); if (currentTrainingRun.threads != null) { throw new IllegalStateException( "template called out of order! Must clean up last example set using cleanUpExamples()"); } currentTrainingRun.threads = new ArrayList<Thread>(); currentTrainingRun.queues.clear(); for (int k = 0; k < nthreads; k++) { currentTrainingRun.queues.add(new ArrayList<TrainerExample>()); } }
public boolean validateTrainer(Trainer trainer) { if (trainer == null) return false; if (trainer.getFirstName() == null) return false; if (trainer.getFirstName().trim().equals("")) return false; if (trainer.getFirstName().matches(".*\\d.*")) return false; if (trainer.getLastName() == null) return false; if (trainer.getLastName().trim().equals("")) return false; if (trainer.getLastName().matches(".*\\d.*")) return false; if (trainer.getAge() == null) return false; if (trainer.getAge() < 40) return false; if (trainer.getAnnualSalary() == null) return false; if (trainer.getAnnualSalary().getAmount() == null) return false; if (trainer.getPreviousTeamList() == null) return false; if (trainer.getPreviousTeamList().size() < 1) return false; for (Team team : trainer.getPreviousTeamList()) { if (team == null) return false; } return true; }
public void chooseCharacters() { String playerPokemonName; String opponentPokemonName; while (true) { System.out.print("Enter your pokemon: "); playerPokemonName = reader.nextLine(); System.out.print("Enter opponent's pokemon: "); opponentPokemonName = reader.nextLine(); // a bit hardcoded... if (!playerPokemonName.equals("bulbasaur") && !playerPokemonName.equals("charmander") && !playerPokemonName.equals("squirtle")) { System.out.println("Either name was invalid! Try lowercase?"); } else if ((!opponentPokemonName.equals("bulbasaur") && !opponentPokemonName.equals("charmander") && !opponentPokemonName.equals("squirtle"))) { System.out.println("Either name was invalid! Try lowercase?"); } else { break; } } player = new Trainer("Ash", playerPokemonName); opponent = new Trainer("Gary", opponentPokemonName); pokemons.add(player.getPokemon()); pokemons.add(opponent.getPokemon()); wait(600); System.out.println( "So it is - " + player.getName() + "'s " + player.getPokemonName() + " versus " + opponent.getName() + "'s " + opponent.getPokemonName() + "! "); wait(600); }
public Move chooseAttack(Trainer trainer) { // player attackchooser if (trainer == player) { ArrayList<Move> availableMoves = player.getPokemon().getMoveSet(); for (int i = 0; i < availableMoves.size(); i++) { System.out.println(i + ") " + availableMoves.get(i)); } System.out.println("2) Use Potion (" + player.getPotionAmount() + " left)"); System.out.print("\n Choose action (number): "); String command = reader.nextLine(); Move chosenMove; while (true) { if (command.equals("0")) { chosenMove = availableMoves.get(0); System.out.println( player.getPokemonName() + " will use: " + availableMoves.get(0).getName()); break; } else if (command.equals("1")) { chosenMove = availableMoves.get(1); System.out.println( player.getPokemonName() + " will use: " + availableMoves.get(1).getName()); break; } else if (command.equals("2")) { // use potion as a move, check for it in method attack() chosenMove = new Move("usepotion", "", "", 0, 0, 0); break; } else { System.out.println("Invalid move!"); System.out.print("\n Choose action (number): "); command = reader.nextLine(); } } return chosenMove; } // AI control else if (trainer == opponent) { Move chosenMove; int randomized; randomized = random.nextInt((2 - 0 + 1) + 0); ArrayList<Move> availableMoves = opponent.getPokemon().getMoveSet(); for (int i = 0; i < availableMoves.size(); i++) { if (randomized == 2) { if (opponent.getPokemon().isFullHp()) { // System.out.println("Gary tried to use a potion, but his pokemon is already at Full // HP!"); wait(200); chosenMove = availableMoves.get(0); } if (opponent.getPokemon().getHp() < 40 && opponent.getPotionAmount() != 0) { chosenMove = new Move("usepotion", "", "", 0, 0, 0); } else { chosenMove = availableMoves.get(0); System.out.println( "Gary's " + opponent.getPokemonName() + " will use: " + chosenMove.getName()); wait(600); } return chosenMove; } else { wait(200); chosenMove = availableMoves.get(randomized); System.out.println( "Gary's " + opponent.getPokemonName() + " will use: " + chosenMove.getName()); wait(600); return chosenMove; } } System.out.println("Critical error! Exiting... \"chooseAttack()\", AI controlled"); return null; } else { System.out.println("Critical error! Exiting... \"chooseAttack()\""); return null; } }