📄 ddzdesk.cs
字号:
{
paiType = PaiType.Pass;
return 1;
}
if (chuPaiCount == 1) //单牌
{
if (paistrlist.Trim() == "")
{
paiType = PaiType.Not;
return 0;
}
paiMin = int.Parse(paistrlist);
paiType = PaiType.Single;
return 1;
}
else if (chuPaiCount == 2) //双牌或火箭
{
int dui = IsTwo(paistrlist);
int huojian = IsRocket(paistrlist);
if (dui > 0)
{
paiMin = dui;
paiType = PaiType.Double;
return 1;
}
else if (huojian > 0)
{
paiMin = huojian;
paiType = PaiType.Rocket;
return 1;
}
else
{
return 0;
}
}
else if (chuPaiCount == 3) //三张
{
if ((paiMin = Is3(paistrlist)) > 0)
{
paiType = PaiType.Three;
return 1;
}
else
{
return 0;
}
}
else if (chuPaiCount == 4) //三带一 或 炸弹
{
int san = Is3_1(paistrlist);
int zhadan = IsBomb(paistrlist);
if (san > 0)
{
paiMin = san;
paiType = PaiType.Three1;
return 1;
}
else if (zhadan > 0)
{
paiMin = zhadan;
paiType = PaiType.Bomb;
return 1;
}
else
{
return 0;
}
}
#endregion
#region 大于等于5张 (三带一对 或 莲子)
if (chuPaiCount >= 5) //三带一对 或 莲子
{
int san2 = Is3_2(paistrlist);
int lianzhi = IsOneTrain(paistrlist);
if (san2 > 0)
{
paiMin = san2;
paiType = PaiType.Three2;
return 1;
}
else if (lianzhi > 0)
{
paiMin = lianzhi;
paiType = PaiType.OneTrain;
return 1;
}
}
#endregion
#region 大于等于6张 (四带两单 、 姊妹对 或 飞机<不带>)
if (chuPaiCount >= 6)
{
int si11 = Is4_11(paistrlist);
if (si11 > 0)
{
paiMin = si11;
paiType = PaiType.Four11;
return 1;
}
int zhimei = IsTwoTrain(paistrlist);
if (zhimei > 0)
{
paiMin = zhimei;
paiType = PaiType.TwoTrain;
return 1;
}
int feiji = Is33(paistrlist);
if (feiji > 0)
{
paiMin = feiji;
paiType = PaiType.T33;
return 1;
}
}
#endregion
#region 等于8张 (四带两对 或 飞机<带两单>)
if (chuPaiCount == 8)
{
int si22 = Is4_22(paistrlist);
if (si22 > 0)
{
paiMin = si22;
paiType = PaiType.Four22;
return 1;
}
int feiji = Is33_Tail(paistrlist);
if (feiji > 0)
{
paiMin = feiji;
paiType = PaiType.T33_11;
return 1;
}
return 0;
}
#endregion
#region 等于10张 (飞机<带两对>)
if (chuPaiCount == 10)
{
int feiji = Is33_Tail(paistrlist);
if (feiji > 0)
{
paiMin = feiji;
paiType = PaiType.T33_22;
return 1;
}
return 0;
}
#endregion
#region 等于12张 (飞机<带三单>)
if (chuPaiCount == 12)
{
int feiji = Is33_Tail(paistrlist);
if (feiji > 0)
{
paiMin = feiji;
paiType = PaiType.T333_111;
return 1;
}
return 0;
}
#endregion
#region 等于15张 (飞机<带三对>)
if (chuPaiCount == 15)
{
int feiji = Is33_Tail(paistrlist);
if (feiji > 0)
{
paiMin = feiji;
paiType = PaiType.T333_222;
return 1;
}
return 0;
}
#endregion
#region 等于16张 (飞机<带四单>)
if (chuPaiCount == 16)
{
int feiji = Is33_Tail(paistrlist);
if (feiji > 0)
{
paiMin = feiji;
paiType = PaiType.T3333_1111;
return 1;
}
return 0;
}
#endregion
#region 等于20张 (飞机<带四对> 或 飞机<带五单>) 只有地主有这种可能(其实也是不太可能的牌,比中七星彩难多了),刚好一手牌打完,即春天
if (chuPaiCount == 20)
{
int feiji = Is33_Tail(paistrlist);
if (feiji > 0)
{
paiMin = feiji;
paiType = PaiType.T33333;
return 1;
}
}
#endregion
return 0;
}
//查找可出的牌(标记在 medp.paistr 中)
private void SearchChuPai(DdzPoke medp)
{
medp.paistr = "pass";
if (firstPlayer == medp.order)
{
DirectChuPai(medp);
}
else
{
int index = (paiMin1 > 5000) ? (paiMin1 / 10) % 100 + 13 : (paiMin1 / 10) % 100;
switch (paiType1)
{
case PaiType.Single:
{
Search1(medp ,index); break;
}
case PaiType.Double:
{
Search2(medp, index); break;
}
case PaiType.Three:
{
Search3(medp, index); break;
}
case PaiType.Three1:
{
Search3_1(medp, index); break;
}
case PaiType.Bomb:
{
SearchBomb(medp, index); break;
}
case PaiType.Three2:
{
Search3_2(medp, index); break;
}
case PaiType.OneTrain:
{
SearchOneTrain(medp, index ,chuPaiCount1); break;
}
case PaiType.Four11:
{
SearchFour11(medp, index); break;
}
case PaiType.TwoTrain:
{
SearchTwoTrain(medp, index, chuPaiCount1); break;
}
case PaiType.T33:
{
SearchT33(medp, index, chuPaiCount1); break;
}
case PaiType.Four22:
{
SearchFour22(medp, index); break;
}
case PaiType.T33_11:
{
SearchT33_11(medp, index, chuPaiCount1); break;
}
case PaiType.T333_111:
{
SearchT333_111(medp, index, chuPaiCount1); break;
}
case PaiType.T3333_1111:
{
SearchT3333_1111(medp, index, chuPaiCount1); break;
}
case PaiType.Rocket:
{
break;
}
default:
{
int[] tmpPaiArray = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
foreach (Card paiCard in medp.OrgalCard)
{
if (paiCard.state == 0)
{
int ind = (paiCard.value > 5000) ? (paiCard.value / 10) % 100 + 13 : (paiCard.value / 10) % 100; //判断大小鬼
tmpPaiArray[ind]++;
}
}
for (int i = 1; i < tmpPaiArray.Length - 2; i++)
{
if (tmpPaiArray[i] == 4)//找炸弹
{
string findPaiStr;
int tmpMinPai = FindPaiByIndex(medp, i, 4, out findPaiStr);
if (findPaiStr != "" && tmpMinPai > 0)
{
medp.paistr = findPaiStr;
}
return ;
}
}
//找大小鬼
if (tmpPaiArray[14] == 1 && tmpPaiArray[15] == 1)
{
medp.paistr = "5015,5025";
}
return ;
}
}
}
}
//直接出牌
private void DirectChuPai(DdzPoke medp)
{
int npaicount = 0;
foreach (Card paiCard in medp.OrgalCard)
{
if (paiCard.state == 0)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -