牌型的定义在http://blog.youkuaiyun.com/csdn_cjt/article/details/78593140 第一章 这是第三章
下面是代码
#region isShowOutCardBtn
public static bool isShowOutCardBtn(List<int> myCards,
List<int> lastCards, DDZ_POKER_TYPE lastCardType)
{
// 上一首牌的个数
int prevSize = lastCards.Count;
int mySize = myCards.Count;
// 我先出牌,上家没有牌
if (prevSize == 0 && mySize != 0)
{
return true;
}
// 集中判断是否王炸,免得多次判断王炸
if (lastCardType == DDZ_POKER_TYPE.KingBomb)
{
Debug.Log("上家王炸,肯定不能出。");
return false;
}
if (mySize >= 2)
{
List<int> cards = new List<int>();
cards.Add(myCards[mySize - 1]);
cards.Add(myCards[mySize - 2]);
if (DDZCardRule.IsJokerBoom(cards))
{
return true;
}
}
// 集中判断对方不是炸弹,我出炸弹的情况
if (lastCardType != DDZ_POKER_TYPE.FourBomb)
{
//if (mySize < 4) //SbBug 害的我找半天
//{
// Debug.Log("炸弹false");
// return false;
//}
if (mySize > 4) {
for (int i = 0; i < mySize - 3; i++)
{
int grade0 = myCards[i];
int grade1 = myCards[i + 1];
int grade2 = myCards[i + 2];
int grade3 = myCards[i + 3];
if (grade1 == grade0 && grade2 == grade0
&& grade3 == grade0)
{
return true;
}
}
}
}
int prevGrade = lastCards[0];
Debug.Log("prevGrade"+prevGrade);
// 比较2家的牌,主要有2种情况,1.我出和上家一种类型的牌,即对子管对子;
// 2.我出炸弹,此时,和上家的牌的类型可能不同
// 王炸的情况已经排除
// 上家出单
if (lastCardType == DDZ_POKER_TYPE.Single)
{
// 一张牌可以大过上家的牌
for (int i = mySize - 1; i >= 0; i--)
{
int grade = myCards[i];
Debug.Log("grade" + grade);
if (grade > prevGrade)
{
// 只要有1张牌可以大过上家,则返回true
return true;
}
}
}
// 上家出对子
else if (lastCardType == DDZ_POKER_TYPE.Twin)
{
// 2张牌可以大过上家的牌
for (int i = mySize - 1; i >= 1; i--)
{
int grade0 = myCards[i];
int grade1 = myCards[i-1];
if (grade0 == grade1)