Java poker implementation
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

SevenCardStud.java 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. /*
  2. * Copyright (c) Chris 'MD87' Smith, 2007. All rights reserved.
  3. *
  4. * This code may not be redistributed without prior permission from the
  5. * aforementioned copyright holder(s).
  6. */
  7. package com.md87.cardgame.games;
  8. import com.md87.cardgame.Deck;
  9. import com.md87.cardgame.Player;
  10. /**
  11. *
  12. * @author Chris
  13. */
  14. public class SevenCardStud extends AbstractGame {
  15. protected final Deck community = new Deck();
  16. public SevenCardStud(final int numplayers, final int bigblind, final int ante,
  17. final int raises) {
  18. super(numplayers, bigblind, ante, raises);
  19. }
  20. /** {@inheritDoc} */
  21. public int holeCardCount() {
  22. return 7;
  23. }
  24. /** {@inheritDoc} */
  25. public Deck getCommunityCards() {
  26. return community;
  27. }
  28. protected void startGame() {
  29. notifyNewGame();
  30. discardCards();
  31. community.clear();
  32. shuffle();
  33. doAntes();
  34. doBlinds();
  35. dealCard(players.get((dealer + 1) % numplayers), false);
  36. dealCard(players.get((dealer + 1) % numplayers), false);
  37. dealCard(players.get((dealer + 1) % numplayers), true);
  38. waitForBets();
  39. if (countPlayers(true, true, false) > 1) {
  40. dealCard(players.get((dealer + 1) % numplayers), true);
  41. doBettingRound();
  42. }
  43. if (countPlayers(true, true, false) > 1) {
  44. dealCard(players.get((dealer + 1) % numplayers), true);
  45. doBettingRound();
  46. }
  47. if (countPlayers(true, true, false) > 1) {
  48. dealCard(players.get((dealer + 1) % numplayers), true);
  49. doBettingRound();
  50. }
  51. if (countPlayers(true, true, false) > 1) {
  52. if (deck.size() >= countPlayers(true, true, false)) {
  53. dealCard(players.get((dealer + 1) % numplayers), false);
  54. } else {
  55. community.add(deck.deal());
  56. notifyCommunityCardsUpdated();
  57. }
  58. doBettingRound();
  59. }
  60. if (countPlayers(true, true, false) > 1) {
  61. doShowDown();
  62. } else {
  63. doWinner();
  64. }
  65. for (Player player : players) {
  66. if (player.getCash() <= 0) {
  67. player.setOut();
  68. }
  69. }
  70. notifyEndGame();
  71. doDealerAdvance();
  72. }
  73. protected boolean canDoBringIns() {
  74. return true;
  75. }
  76. }