package com.bassoli.poker; public class AllHandsAnalyzer { private Deck deck; public AllHandsAnalyzer() { super(); deck = new Deck(); } public double handsBeaten(String pocket, String board) { Hand newPocket = new Hand(); Hand newBoard = new Hand(); for (int i = 0; i < pocket.length() ; i += 2) { newPocket.addCard(pocket.substring(i,i+2)); } for (int i = 0; i < board.length() ; i += 2) { newBoard.addCard(board.substring(i,i+2)); } return handsBeaten(newPocket,newBoard); } public double handsTied(String pocket, String board) { Hand newPocket = new Hand(); Hand newBoard = new Hand(); for (int i = 0; i < pocket.length() ; i += 2) { newPocket.addCard(pocket.substring(i,i+2)); } for (int i = 0; i < board.length() ; i += 2) { newBoard.addCard(board.substring(i,i+2)); } return handsTied(newPocket,newBoard); } public double handsLostTo(String pocket, String board) { Hand newPocket = new Hand(); Hand newBoard = new Hand(); for (int i = 0; i < pocket.length() ; i += 2) { newPocket.addCard(pocket.substring(i,i+2)); } for (int i = 0; i < board.length() ; i += 2) { newBoard.addCard(board.substring(i,i+2)); } return handsLostTo(newPocket,newBoard); } private double handsBeaten(Hand pocket, Hand board) { int count = 0; for (int i = 0 ; i < pocket.getHandSize() ; i++) { deck.removeCard(pocket.getCards()[i].toString()); } for (int i = 0 ; (board != null)&&(i < board.getHandSize()) ; i++) { deck.removeCard(board.getCards()[i].toString()); } Hand[] allHands = deck.holdemHands(); for (int i = 0 ; i < allHands.length ; i++) { if (WinAnalyzer.firstHandWins(pocket,allHands[i],board)) { count++; } } double count1 = count; double count2 = allHands.length; double percentage = (count1/count2)*100; return percentage; } private double handsTied(Hand pocket, Hand board) { int count = 0; for (int i = 0 ; i < pocket.getHandSize() ; i++) { deck.removeCard(pocket.getCards()[i].toString()); } for (int i = 0 ; (board != null)&&(i < board.getHandSize()) ; i++) { deck.removeCard(board.getCards()[i].toString()); } Hand[] allHands = deck.holdemHands(); for (int i = 0 ; i < allHands.length ; i++) { if (WinAnalyzer.handsTied(pocket,allHands[i],board)) { count++; } } double count1 = count; double count2 = allHands.length; double percentage = (count1/count2)*100; return percentage; } private double handsLostTo(Hand pocket, Hand board) { int count = 0; for (int i = 0 ; i < pocket.getHandSize() ; i++) { deck.removeCard(pocket.getCards()[i].toString()); } for (int i = 0 ; (board != null)&&(i < board.getHandSize()) ; i++) { deck.removeCard(board.getCards()[i].toString()); } Hand[] allHands = deck.holdemHands(); for (int i = 0 ; i < allHands.length ; i++) { if (WinAnalyzer.secondHandWins(pocket,allHands[i],board)) { count++; } } double count1 = count; double count2 = allHands.length; double percentage = (count1/count2)*100; return percentage; } public static void main(String[] args) { Hand pocket = new Hand(); pocket.addCard("SQ"); pocket.addCard("DA"); Hand board = new Hand(); board.addCard("DQ"); board.addCard("DA"); board.addCard("D8"); board.addCard("D5"); //board.addCard("H2"); AllHandsAnalyzer analyzer = new AllHandsAnalyzer(); System.out.println(analyzer.handsBeaten(pocket,board)); System.out.println(analyzer.handsTied(pocket,board)); System.out.println(analyzer.handsLostTo(pocket,board)); } }