import bots.BotRepository;
import game.GameIDGenerator;
import game.GameRunner;
import game.HandHistoryWriter;
import game.TableSeater;
import game.deck.DeckFactory;
import game.deck.SerializedDeck;
import game.tournament.TournamentGameDescription;
import game.tournament.TournamentRank;
import game.tournament.TournmentTableSeater;
import java.io.FileWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* This class starts a simulation on the console and writes a handhistory-file
* to the ./data directory
*/
public class TournamentConsoleStarter {
private static final int NUM_COMPETITORS = 50;
public static void main(String[] args) throws Exception {
List<String> botNames = new ArrayList<String>();
while (botNames.size() < NUM_COMPETITORS) {
botNames.add("DemoBot/SimpleBot");
botNames.add("SmarterBot/SmarterBot");
botNames.add("DemoBot/AlwaysCallBot");
botNames.add("Oursland/ChumpBot");
botNames.add("Oursland/FlockBot");
}
BotRepository botRepository = new BotRepository();
TableSeater tableSeater = new TournmentTableSeater(botRepository);
GameIDGenerator gameIDGenerator = new GameIDGenerator(System.nanoTime());
HandHistoryWriter handHistoryWriter = new HandHistoryWriter();
String simulationFileName = new SimpleDateFormat("yyMMdd-HHmm").format(new Date());
handHistoryWriter.setWriter(new FileWriter("./data/" + simulationFileName + "-history.txt"));
TournamentRank rank = new TournamentRank();
TournamentGameDescription tournament = new TournamentGameDescription(100, 1000);
tournament.setBotNames(botNames.toArray(new String[botNames.size()]));
// start the game
GameRunner runner = tournament.createGameRunner();
DeckFactory deckFactory = SerializedDeck.createFactory("./data/decks/deck-100000.deck");
runner.runGame(deckFactory, tableSeater, gameIDGenerator, Arrays.asList(handHistoryWriter, rank));
System.out.println("\n\n==============================================");
System.out.println("Final Rank:\n");
for (int pos = 1; pos <= botNames.size(); pos++) {
System.out.println("" + pos + ": " + rank.getRankedPlayers().get(botNames.size() - pos).getName());
}
}
}