十三水--全顺牌型

bool CGameLogic::IsAllLine(BYTE cbCard[], BYTE cbCount, bool bSameColor)
{
if (cbCount == 0) return true;
if (cbCount != 3 && cbCount != 5 && cbCount != 8 && cbCount != 10 && cbCount != 13)
{
return false;
}


if (cbCount == 3 || cbCount == 5)
{
return IsLine(cbCard, cbCount, bSameColor);
}


BYTE cbTemp[13];
memset(cbTemp, 0, sizeof(cbTemp));


for (BYTE i = 0; i < cbCount; i++)
{
cbTemp[i] = cbCard[i];
}


BYTE cbIndex[5] = { 0,1,2,3,4 };


do
{
             
BYTE cbCarResult[5];
for(BYTE i=0;i<5;++i)
{
  cbCarResult[i]=cbTemp[cbIndex[i]];
  cbTemp[cbIndex[i]]=0;
}
SortCardByValue(cbTemp,cbCount);




if (IsLine(cbCarResult, 5, bSameColor) && IsAllLine(cbTemp, cbCount - 5, bSameColor))
{
BYTE cbSortCount = 0;
for (BYTE i = 0; i < 5; i++)
{
cbCard[cbSortCount++] = cbCarResult[i];
}
for (BYTE i = 0; i < cbCount - 5; i++)
{
cbCard[cbSortCount++] = cbTemp[i];
}
return true;
}
else
{
for (BYTE i = 0; i < cbCount; i++)
{
cbTemp[i] = cbCard[i];
}
}


if (cbIndex[4] == (cbCount - 1))
{
BYTE i = 4;
for (; i > 0; i--)
{
if ((cbIndex[i - 1] + 1) != cbIndex[i])
{
BYTE cbNewIndex = cbIndex[i - 1];
for (BYTE j = (i - 1); j < 5; j++) cbIndex[j] = cbNewIndex + j - (i - 1) + 1;
break;
}
}
if (i == 0) break;
}
else cbIndex[4]++;
} while (true);


return false;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值