Skip to content

Commit

Permalink
#9 Tétek meghatározása
Browse files Browse the repository at this point in the history
Stratégiák osztályokba szervezése előkészítve. A különböző játékállások (preflop, flop, turn, river) stratégiái külön osztályt kapnak, itt kellene meghatározni majd a tétet.
  • Loading branch information
imate committed Apr 5, 2015
1 parent bcfcf49 commit 46e7271
Show file tree
Hide file tree
Showing 8 changed files with 363 additions and 5 deletions.
21 changes: 21 additions & 0 deletions src/main/java/org/leanpoker/player/CheckConditions.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.leanpoker.player.checkCards.CheckResult;
import org.leanpoker.player.checkCards.Hand;
import org.leanpoker.player.checkCards.HandChecker;
import org.leanpoker.player.strategies.*;

/**
*
Expand All @@ -30,6 +31,26 @@ public int check() {
} else {
afterPreFlop();
}

// Strategy strategy = null;
// switch (gameState.getCommunityCards().size()) {
// case 0:
// strategy = new PreFlopStrategy();
// break;
// case 3:
// strategy = new FlopStrategy();
// break;
// case 4:
// strategy = new TurnStrategy();
// break;
// case 5:
// strategy = new RiverStrategy();
// break;
// }
// if (strategy != null) {
// bet = strategy.calculateBet(gameState);
// }

return bet;
}

Expand Down
5 changes: 4 additions & 1 deletion src/main/java/org/leanpoker/player/checkCards/Check.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,10 @@ public CheckResult getResult(List<Card> cards) {
}
}

protected void check() {
protected abstract void check();

public boolean isApplicable(List<Card> cards) {
return getResult(cards) != null;

This comment has been minimized.

Copy link
@thomastrinn

thomastrinn Apr 14, 2015

Contributor

hu, na várjunk csak, szóval úgy állapítod meg, hogy ez érvényes-e, hogy lefuttattsz mindent, majd ha nem null, akkor jó, s utána újból elkéred a getResult-ot... azaz kétszer meg végig az algoritmus... hm... ez biztos megfontolt lépés volt? :)

}

protected int countRank(String rank) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
* @author imate
*/
public class HandChecker {

private List<Card> allCards = new ArrayList<>();
private static final List<Check> checkers = Arrays.asList(
new CheckRoyalFlush(),
Expand All @@ -24,22 +24,22 @@ public class HandChecker {
new CheckTwoPair(),
new CheckOnePair(),
new CheckHighCard());

public CheckResult getResult(GameState gameState) {
setMyCards(gameState);
allCards.clear();
allCards.addAll(gameState.requestActHoleCards());
allCards.addAll(gameState.getCommunityCards());
CheckResult result = null;
for (Check checker : checkers) {
if (checker.getResult(allCards) != null) {
if (checker.isApplicable(allCards)) {
result = checker.getResult(allCards);
break;
}
}
return result;
}

private void setMyCards(GameState gameState) {
for (Card card : gameState.requestActHoleCards()) {
card.setInMyHand(true);
Expand Down
59 changes: 59 additions & 0 deletions src/main/java/org/leanpoker/player/strategies/FlopStrategy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package org.leanpoker.player.strategies;

/**
*
* @author imate
*/
public class FlopStrategy extends Strategy {

@Override
protected int calcRoyalFlush() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcStraightFlush() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcPoker() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcFull() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int callFlush() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcStraight() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcDrill() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcTwoPair() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcOnePair() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcHighCard() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

}
59 changes: 59 additions & 0 deletions src/main/java/org/leanpoker/player/strategies/PreFlopStrategy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package org.leanpoker.player.strategies;

/**
*
* @author imate
*/
public class PreFlopStrategy extends Strategy {

@Override
protected int calcRoyalFlush() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcStraightFlush() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcPoker() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcFull() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int callFlush() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcStraight() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcDrill() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcTwoPair() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcOnePair() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcHighCard() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

}
59 changes: 59 additions & 0 deletions src/main/java/org/leanpoker/player/strategies/RiverStrategy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package org.leanpoker.player.strategies;

/**
*
* @author imate
*/
public class RiverStrategy extends Strategy{

@Override
protected int calcRoyalFlush() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcStraightFlush() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcPoker() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcFull() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int callFlush() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcStraight() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcDrill() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcTwoPair() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcOnePair() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

@Override
protected int calcHighCard() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

}
98 changes: 98 additions & 0 deletions src/main/java/org/leanpoker/player/strategies/Strategy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.leanpoker.player.strategies;

import com.wcs.poker.gamestate.GameState;
import org.leanpoker.player.checkCards.CheckResult;
import org.leanpoker.player.checkCards.Hand;
import org.leanpoker.player.checkCards.HandChecker;

/**
*
* @author imate
*/
public abstract class Strategy {

protected Hand hand;
protected String highRank1;
protected String highRank2;
protected int myCardsOfHand;
protected GameState gameState;

public int calculateBet(GameState gameState) {
int bet = 0;
HandChecker handChecker = new HandChecker();
CheckResult result = handChecker.getResult(gameState);
this.hand = result.getHand();
this.highRank1 = result.getHighRank1();
this.highRank2 = result.getHighRank2();
this.myCardsOfHand = result.getMyCardsOfHand();

switch (hand) {
case ROYAL_FLUSH:
bet = calcRoyalFlush();
break;

case STRAIGH_FLUSH:
bet = calcStraightFlush();
break;

case POKER:
bet = calcPoker();
break;

case FULL:
bet = calcFull();
break;

case FLUSH:
bet = callFlush();
break;

case STRAIGHT:
bet = calcStraight();
break;

case DRILL:
bet = calcDrill();
break;

case TWO_PAIR:
bet = calcTwoPair();
break;

case ONE_PAIR:
bet = calcOnePair();
break;

case HIGH_CARD:
bet = calcHighCard();

}

return bet;
}

protected abstract int calcRoyalFlush();

protected abstract int calcStraightFlush();

protected abstract int calcPoker();

protected abstract int calcFull();

protected abstract int callFlush();

protected abstract int calcStraight();

protected abstract int calcDrill();

protected abstract int calcTwoPair();

protected abstract int calcOnePair();

protected abstract int calcHighCard();
}
Loading

0 comments on commit 46e7271

Please sign in to comment.