diff options
Diffstat (limited to 'aux/set/Hand.java')
-rw-r--r-- | aux/set/Hand.java | 66 |
1 files changed, 64 insertions, 2 deletions
diff --git a/aux/set/Hand.java b/aux/set/Hand.java index b715e54..cf5767e 100644 --- a/aux/set/Hand.java +++ b/aux/set/Hand.java @@ -2,10 +2,14 @@ package mahjong.aux.set; import mahjong.aux.Card; +import java.util.Vector; + /** * Created by joe on 12/1/14. */ public class Hand extends Set { + private CardSet accountant = new CardSet(0); + public Hand() { super(); @@ -19,8 +23,66 @@ public class Hand extends Set { super(cards); } - public Set[] generateEnds() + public Vector<Aside> asides = new Vector<Aside>(); + + public void init() + { + cards.clear(); + asides.clear(); + } + + public boolean huAble(Card card) + { + boolean hu=false; + accountant.add(card,1); + if (accountant.calTing(asides.size())==0) + hu=true; + accountant.add(card,-1); + return hu; + } + + public boolean chiAble(Card card) + { + if (accountant.cardLeft(CardSet.nextCardOrd(CardSet.std2Id(card.getStdId())))>0) + if (accountant.cardLeft(CardSet.prevCardOrd(CardSet.std2Id(card.getStdId())))>0 + || accountant.cardLeft(CardSet.next2CardOrd(CardSet.std2Id(card.getStdId())))>0) + return true; + if (accountant.cardLeft(CardSet.prevCardOrd(CardSet.std2Id(card.getStdId())))>0 + && accountant.cardLeft(CardSet.prev2CardOrd(CardSet.std2Id(card.getStdId())))>0) + return true; + return false; + } + + public boolean pengAble(Card card) + { + if (accountant.cardLeft(CardSet.std2Id(card.getStdId()))>2) + return true; + return false; + } + + public boolean gangAble(Card card) + { + if (accountant.cardLeft(CardSet.std2Id(card.getStdId()))>3) + return true; + return false; + } + + public boolean jiaGangAble(Card card) + { + for (Aside i:asides) + if (i.getType()== Aside.Type.Peng && card.getStdId() == i.getRep().getStdId()) + return true; + return false; + } + + public boolean anGangAble(Card card) { - return null; + boolean gang=false; + accountant.add(card,1); + for (int i=0;i< CardSet.cardTypeTotal;++i) + if (accountant.cardLeft(i)>3) + gang=true; + accountant.add(card,-1); + return gang; } } |