100 likes | 299 Views
Project Six CSE 397/497 AI and Computer Games. Introduction to Poker Academy. Bots for the Poker Academy software are written in Java We will use the Meerkat API to interact with the Poker Academy Software Links to everything you need are provided on the Project Web Page.
E N D
Project Six CSE 397/497 AI and Computer Games
Introduction to Poker Academy • Bots for the Poker Academy software are written in Java • We will use the Meerkat API to interact with the Poker Academy Software • Links to everything you need are provided on the Project Web Page
Programming Your AI • Implement the poker.Player interface, and over-ride the required methods. • Build against the provided meerkat-api.jar library • Create a jar file with your bot's classes. • Create a player definition file
Some Classes You Should Know • Player • Your AI will inherit from Player • It has three methods: • getAction() • holeCards() • init()
Player • init(Preferences prefs) • Loads preferences from .pd file • getAction() • When it’s your turn to act, this method is called. Think of it as your main body • holeCards(Card c1, Card c2, int seat) • Returns your two hole cards, and your location at the table
Card • Contains functions such as getRank() and getSuit() for manipulating cards • Defines a constants for every value and suit, such as TWO, SEVEN, KING, or SPADES • Ex: if (c1.getRank() >= Card.TEN && c2.getRank() >= Card.TEN) { if (c1.getSuit() == c2.getSuit()) { return Action.raiseAction(toCall, gi.getBetSize()); } return Action.callAction(toCall); }
Action • Think of actions returned by getAction() as nodes in your FSM • From SimpleBot.java: if (gi.getStage() == Holdem.PREFLOP) { return preFlopAction(); } else { return postFlopAction(); }
Some More Classes to Know • GameInfo • Contains information about the current game, such as pot size, stage of the game (pre-flop, flop, river, etc), and info about the other players • Hand • Stores up to 7 Card elements • Once your cards are in a Hand, you can use the HandEvaluator class to do lots of statistical functions on them, such as getNumBetter(), which returns the number of hands better than your current hand
Creating Your .pd File • The .pd file stores information about your bot. We use SimpleBot.pd as a guide: # All plug-ins must run through the following class: PLAYER_CLASS=com.biotools.poker.opponent.PlugInOpponent # put your bot's full class name here: BOT_PLAYER_CLASS=SimpleBot # put the path to your jar file here (relative to PokiPoker.exe) PLAYER_JAR_FILE=data/bots/simpleBot.jar # Your Bot's name: PLAYER_NAME=SimpleBot # Your bot engine name: AI_NAME=SimpleBot
Creating Your .pd File (cont) # Options for your Bot: DEBUG=true RANDOM_SEED=31313 ALWAYS_CALL_MODE=false