123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- /*
- * Copyright (c) Chris 'MD87' Smith, 2007. All rights reserved.
- *
- * This code may not be redistributed without prior permission from the
- * aforementioned copyright holder(s).
- */
-
- package com.md87.cardgame.games;
-
- import com.md87.cardgame.Deck;
- import com.md87.cardgame.Player;
- import com.md87.cardgame.interfaces.Hand;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.List;
-
- /**
- * Implements a standard (local) Omaha Hold'em game.
- *
- * @author Chris
- */
- public class OmahaHoldEm extends TexasHoldEm {
-
- public OmahaHoldEm(final int numplayers, final int bigblind, final int ante,
- final int raises) {
- super(numplayers, bigblind, ante, raises);
- }
-
- protected void startGame() {
- notifyNewGame();
-
- discardCards();
- shuffle();
-
- community.clear();
-
- doAntes();
-
- doBlinds();
-
- dealCard(players.get((dealer + 1) % numplayers), false);
- dealCard(players.get((dealer + 1) % numplayers), false);
- dealCard(players.get((dealer + 1) % numplayers), false);
- dealCard(players.get((dealer + 1) % numplayers), false);
-
- for (int i = 0; i < 5; i++) {
- community.add(deck.deal());
- }
-
- doneFlop = false;
- doneTurn = false;
- doneRiver = false;
-
- waitForBets();
-
- if (countPlayers(true, true, false) > 1) {
- doneFlop = true;
-
- doBettingRound();
- }
-
- if (countPlayers(true, true, false) > 1) {
- doneTurn = true;
-
- doBettingRound();
- }
-
- if (countPlayers(true, true, false) > 1) {
- doneRiver = true;
-
- doBettingRound();
- }
-
- if (countPlayers(true, true, false) > 1) {
- doShowDown();
- } else {
- doWinner();
- }
-
- for (Player player : players) {
- if (player.getCash() <= 0) {
- player.setOut();
- }
- }
-
- notifyEndGame();
-
- doDealerAdvance();
- }
-
- /** {@inheritDoc} */
- public int holeCardCount() {
- return 4;
- }
-
- @Override
- public Deck getBestDeck(final Deck cards) {
- if(cards.size() != 4) {
- System.err.println("getBestDeck(): card size != 4");
- new Exception().printStackTrace();
- return new Deck();
- }
-
- Deck tempCards = new Deck(cards);
-
- final List<Hand> hands = new ArrayList<Hand>();
-
- for (int i = 0; i < 4; i++) {
- for (int j = i + 1; j < 4; j++) {
- final Deck base = new Deck();
- base.add(tempCards.get(i));
- base.add(tempCards.get(j));
-
- for (int k = 0; k < 5; k++) {
- for (int l = k + 1; l < 5; l++) {
- final Deck myDeck = new Deck(getCommunityCards());
- myDeck.remove(getCommunityCards().get(k));
- myDeck.remove(getCommunityCards().get(l));
- myDeck.addAll(base);
-
- hands.add(getHand(myDeck));
- }
- }
- }
- }
-
- Collections.sort(hands);
-
- return hands.get(hands.size() - 1).getDeck();
- }
-
- }
|