using UnityEngine;
using System.Collections.Generic;
/// <summary>
/// 牌型 3 4 5 6 7 8 9 10 11(J) 12(Q) 13(K) 14(A) 15(2) 16(小王) 17(大王)
/// </summary>
public class DDZ_CardType
{
public enum DDZ_CardTypes
{
None,//什么都不是
Single,//单张
Double,//对子
Three,//三张
ThreeOne,//三代一
ThreeTwo,//三代二
ShunZi,//顺子45678
LianDui,//连对334455
Flay,//飞机333444
FlayOne,//飞机带单
FlayTwo,//飞机带队
Boom,//炸弹
BoomOne,//炸弹带单张(不是炸弹了)
BoomTwo,//炸弹带对子
}
/// <summary>
/// 是否是单张
/// </summary>
/// <param name="card"></param>
/// <returns></returns>
public static bool IsSingle(List<int> card)
{
if (card.Count == 0)
return true;
return false;
}
/// <summary>
/// 是否是对子
/// </summary>
/// <param name="card"></param>
/// <returns></returns>
public static bool IsDouble(List<int> card)
{
if (card.Count == 2)
{
if (card[0] == card[1])
return true;
else
return false;
}
else
{
return false;
}
}
/// <summary>
/// 是否是三张
/// </summary>
/// <param name="card"></param>
/// <returns></returns>
public static bool IsThree(List<int> card)
{
if (card.Count == 3)
{
if (card[0] != card[1])
return false;
if (card[1] != card[2])
return false;
if (card[0] != card[2])
return false;
return true;
}
else
{
return false;
}
}
/// <summary>
/// 是否是三代一
/// </summary>
/// <param name="card"></param>
/// <returns></returns>
public static bool IsThreeOne(List<int> card)
{
if (card.Count == 4)
{
if (card[0] != card[1])//第一张是单张
{
if (card[1] != card[2])
return false;
if (card[2] != card[3])
return false;
if (card[1] != card[4])
return false;
return true;
}
else if (card[2] != card[3])//第四张是单张
{
if (card[0] != card[1])
return false;
if (card[1] != card[2])
return false;
if (card[0] != card[2])
return false;
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
/// <summary>
/// 是否是三代二
/// </summary>
/// <param name="card"></param>
/// <returns></returns>
public static bool IsThreeTwo(List<int> card)
{
if (card.Count == 5)
{
if (card[0] == card[1])//前2张是对子
{
if (card[2] != card[3])
return false;
if (card[3] != card[4])
return false;
if (card[2] != card[4])
return false;
return true;
}
else if (card[3] == card[4])//后2张是对子
{
if (card[0] != card[1])
return false;
if (card[1] != card[2])
return false;
if (card[0] != card[2])
return false;
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
/// <summary>
/// 是否是顺子45678
/// </summary>
/// <param name="card"></param>
/// <returns></returns>
public static bool IsShunZi(List<int> card)
{
if (card.Count >= 5 && card.Count <= 12)
{
for (int i = 0; i < card.Count - 1; i++)
{
if (card[i + 1] != card[i] + 1)
{
return false;
}
if (card[i] == 15 || card[i] == 16 || card[i] == 17)//顺子不能是2和2王
return false;
}
return true;
}
else
{
return false;
}
}
/// <summary>
/// 是否是连对334455
/// </summary>
/// <param name="card"></param>
/// <returns></returns>
public static bool IsLianDui(List<int> card)
{
if (card.Count >= 6 && card.Count % 2 == 0)
{
for (int i = 0; i < card.Count; i = i + 2)
{
if (card[i] == 15 || card[i] == 16 || card[i] == 17)//连对不能包含2和俩王
return false;
if (card[i] != card[i + 1])//对子之间是否相等
return false;
if (card[i + 2] != card[i] + 1)//2个对子之间是否相差1
return false;
}
return true;
}
else
{
return false;
}
}
/// <summary>
/// 是否是飞机333444
/// </summary>
/// <param name="card"></param>
/// <returns></returns>
public static bool IsFlay(List<int> card)
{
if (card.Count >= 6 && card.Count % 3 == 0)
{
for (int i = 0; i < card.Count; i = i + 3)
{
if (card[i] == 15 || card[i] == 16 || card[i] == 17)//连对不能包含2和俩王
return false;
if (card[i] != card[i + 1])
return false;
if (card[i + 1] != card[i + 2])
return false;
if (card[i] != card[i + 2])
return false;
if (card[i] + 1 != card[i + 3])
return false;
}
return true;
}
else
{
return false;
}
}
/// <summary>
/// 是否是飞机带单
/// </summary>
/// <param name="card"></param>
/// <returns></returns>
//public bool IsFlayOne(List<int> card)
//{
//}
/// <summary>
/// 是否是炸弹
/// </summary>
/// <param name="card"></param>
/// <returns></returns>
public static bool IsBoom(List<int> card)
{
if (card.Count == 2)
{
if (card[0] == 16 && card[1] == 17)
{
return true;
}
else
{
return false;
}
}
else if (card.Count == 4)
{
for (int i = 0; i < card.Count; i++)
{
if (i == card.Count)
{
if (card[0] != card[i])
return false;
}
else
{
if (card[i] != card[i + 1])
return false;
}
}
return true;
}
else
{
return false;
}
}
/// <summary>
/// 炸弹带单张
/// </summary>
/// <param name="card"></param>
/// <returns></returns>
public static bool IsBoomOne(List<int> card)
{
if (card.Count == 3)
{
if (card[1] == 16 && card[2] == 17)
return true;
else
return false;
}
else if (card.Count == 5)
{
if (card[0] != card[1])
{
for (int i = 1; i < card.Count; i++)
{
if (i == card.Count)
{
if (card[0] != card[i])
return false;
}
else
{
if (card[i] != card[i + 1])
return false;
}
}
return true;
}
else if (card[3] != card[4])
{
for (int i = 0; i < card.Count - 1; i++)
{
if (i == card.Count)
{
if (card[0] != card[i])
return false;
}
else
{
if (card[i] != card[i + 1])
return false;
}
}
return true;
}
else
return false;
}
else
return false;
}
/// <summary>
/// 炸弹带对子
/// </summary>
/// <param name="card"></param>
/// <returns></returns>
public static bool IsBoomTwo(List<int> card)
{
if (card.Count == 4)
{
return false;
}
else if (card.Count == 6)
{
return false;
}
else
return false;
}
/// <summary>
/// 判读牌的类型
/// </summary>
/// <param name="card"></param>
/// <returns></returns>
public static DDZ_CardTypes GetCardType(List<int> card)
{
DDZ_CardTypes type = DDZ_CardTypes.None;
card.Sort();
if (IsSingle(card))
{
type = DDZ_CardTypes.Single;
}
else if (IsDouble(card))
{
type = DDZ_CardTypes.Double;
}
else if (IsThree(card))
{
type = DDZ_CardTypes.Three;
}
else if (IsThreeOne(card))
{
type = DDZ_CardTypes.ThreeOne;
}
else if (IsThreeTwo(card))
{
type = DDZ_CardTypes.ThreeTwo;
}
else if (IsShunZi(card))
{
type = DDZ_CardTypes.ShunZi;
}
else if (IsLianDui(card))
{
type = DDZ_CardTypes.LianDui;
}
else if (IsFlay(card))
{
type = DDZ_CardTypes.Flay;
}
else if (IsBoom(card))
{
type = DDZ_CardTypes.Boom;
}
else if (IsBoomOne(card))
{
type = DDZ_CardTypes.BoomOne;
}
else if (IsBoomTwo(card))
{
type = DDZ_CardTypes.BoomTwo;
}
else
{
type = DDZ_CardTypes.None;
}
return type;
}
}
————-还没有写完待完善,后面继续更新