UNPKG

poker-odds-calc

Version:

Fastest and most accurate node module for calculating odds of poker games Texas Hold'em, Texas Shortdeck/Sixplus and Omaha.

85 lines (84 loc) 2.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Player_1 = require("./Player"); const Deck_1 = require("./Deck"); const Game_1 = require("./Game"); const Board_1 = require("./Board"); class Table { constructor(game = "texas_holdem", seats = 9) { this.seats = seats; this.players = []; this._exhaustive = false; this._limit = 100000; this.players = new Array(seats).fill(null).map((p, i) => new Player_1.default(i + 1, this)); this.game = new Game_1.default(game, this); this.deck = new Deck_1.default(this.game); this.board = new Board_1.default(this); } exhaustive() { this._exhaustive = true; return this; } runExhaustive() { return this._exhaustive; } limit(limit) { this._limit = limit; return this; } getLimit() { return this._limit; } tripsBeatsStraight() { this.game.tripsBeatsStraight(); return this; } getPlayersInHand() { return this.players.filter(player => player.inHand()); } getDeck() { return this.deck; } getGame() { return this.game; } getBoard() { return this.board; } boardAction(fn) { fn(this.board); return this; } setPlayerHand(hand, seat) { if (this.players.length < seat) throw new Error("Seat not available!"); if (seat < 1 || seat > this.seats) throw new Error(`Seat ${seat} not available!`); if (!this.players[seat - 1].isEmpty()) throw new Error(`Seat ${seat} taken!`); this.players[seat - 1].setHand(hand); return this; } addPlayer(hand) { let seat = this.players.findIndex(s => s.isEmpty()) + 1; return this.setPlayerHand(hand, seat); } calculate() { if (this.players.filter(player => player.inHand()).length < 2) throw new Error("Minimum 2 players required"); return this.board.getResult(); } setBoard(cards) { this.board.setFlop(cards.slice(0, 3)); if (cards.length > 3) this.board.setTurn(cards[3]); if (cards.length === 5) this.board.setRiver(cards[4]); return this; } setDeadCards(cards) { this.board.dead(cards); return this; } } exports.default = Table;