import game.*; import game.cash.CashGameDescription; import game.cash.CashGameTableSeater; import game.deck.DeckFactory; import game.deck.SerializedDeck; import game.stats.BankrollGraphUI; import java.io.FileWriter; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; import bots.BotRepository; /** * This class starts a simulation on the console and writes a handhistory-file * to the ./data directory */ public class MyCashGameConsoleStarter { public static void main(String[] args) throws Exception { // number of games int numGames = 1000; // if to permute seats to reduce variance boolean permuteSeats = true; // four Bots fight against each other // valid BotNames can be obtained from the botRepository String[] botNames = new String[]{"MCTSBot/MCTSBot", "DemoBot/SimpleBot"}; BotRepository botRepository = new BotRepository(); TableSeater tableSeater = new CashGameTableSeater(botRepository, permuteSeats); 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")); // in the future created via GUI, and persisted via XML to the ./data/games dir CashGameDescription cashGameDescription = new CashGameDescription(); cashGameDescription.setSmallBlind(0.01); cashGameDescription.setBigBlind(0.02); cashGameDescription.setInitialBankRoll(2); cashGameDescription.setNumGames(numGames); cashGameDescription.setBotNames(botNames); //cashGameDescription.setInGameNames(new String[] { "Simply #1", "Simply #2", "Cally #3", "Cally #4" }); // start the game GameRunner runner = cashGameDescription.createGameRunner(); BankrollGraphUI bankrollgraphUI = new BankrollGraphUI(); runner.addBankrollObserver(bankrollgraphUI); DeckFactory deckFactory = SerializedDeck.createFactory("./data/decks/deck-100000.deck"); runner.runGame(deckFactory, tableSeater, gameIDGenerator, Arrays.asList(handHistoryWriter)); bankrollgraphUI.createGraph(simulationFileName); } }