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(); } public Hand(String[] cardNames) { super(cardNames); } public Hand(Card[] cards) { super(cards); } public Vector melds = new Vector(); public void init() { cards.clear(); melds.clear(); } public boolean huAble(Card card) { boolean hu=false; accountant.add(card,1); if (accountant.calTing(melds.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 (Meld i:melds) if (i.getType()== Meld.Type.Peng && card.getStdId() == i.getRep()[0].getStdId()) return true; return false; } public boolean anGangAble(Card card) { 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; } public boolean isAble(Meld.Type type, Card card) { boolean res = false; switch (type) { case Chi: break; case aGang: break; case jGang: break; case Peng: break; } return res; } }