麻将判断胡牌 java_麻将胡牌逻辑 java

最近写了一个麻将的胡牌逻辑,这个麻将是没有万字牌 和 东西南北风牌,以前也写过麻将胡牌逻辑,都没有记录,这次记录一下,方便以后查阅

/**

* 胡牌

* @param isZiMo 是否自摸

* @param roleId 胡牌玩家

* @param pcc 麻将场

*/

public static boolean huCard(boolean isZiMo,int roleId,PlayCardContext pcc){

PlayCardUnit pcu = pcc.getCardUnitByRoleId(roleId);

List handCards = pcu.getCards();

List chiPengGangCard = pcu.getChiPengGangCard();

int cardSize = handCards.size();

//1-9的索引为筒子 11-19为条子 21-23为中发白

byte[] cards = new byte[24];

byte[] color = new byte[3];

for (int i = 0; i < cardSize; i++) {

byte cardId = handCards.get(i);

SCard card = (SCard) StaticData.getStaticModel(EStaticData.CARD, cardId);

int index = 0;

if(card.type == EColorType.TONG_ZI.getType()){

index = card.value;

color[0]++;

}else if (card.type == EColorType.TIAO_ZI.getType()) {

index = 10+card.value;

color[1]++;

}else {

index = 20+card.value;

color[2]++;

}

cards[index]++;

}

int colorCount = (color[0]!=0?1:0)+(color[1]!=0?1:0)+(color[2]!=0?1:0);

boolean isSameColor = colorCount==1;

if(isSameColor){

int size = chiPengGangCard==null?0:chiPengGangCard.size();

if(size>0){

for (int i = 0; i < size; i++) {//计算吃碰杠的牌是否清一色

OperateCardData ocd = chiPengGangCard.get(i);

SCard card = (SCard) StaticData.getStaticModel(ESta

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值