예제 #1
0
    protected static bool isQingYiSe(List <MAHJONG> handInMah, List <MAHJONG> pengList, List <MAHJONG> gangList)
    {
        int           handInCount = handInMah.Count;
        MAHJONG_HUASE curHuase    = getHuaSe(handInMah[0]);

        for (int i = 0; i < handInCount; ++i)
        {
            if (getHuaSe(handInMah[i]) != curHuase)
            {
                return(false);
            }
        }
        int pengCount = pengList.Count;

        for (int i = 0; i < pengCount; ++i)
        {
            if (getHuaSe(pengList[i]) != curHuase)
            {
                return(false);
            }
        }
        int gangCount = gangList.Count;

        for (int i = 0; i < gangCount; ++i)
        {
            if (getHuaSe(gangList[i]) != curHuase)
            {
                return(false);
            }
        }
        return(true);
    }
예제 #2
0
    public static bool isShunzi(List <MahInfo> mahjongList, int startIndex)
    {
        if (mahjongList.Count <= startIndex + 2)
        {
            return(false);
        }
        if (getHuaSe(mahjongList[startIndex].mMah) == MAHJONG_HUASE.MH_FENG ||
            getHuaSe(mahjongList[startIndex + 1].mMah) == MAHJONG_HUASE.MH_FENG ||
            getHuaSe(mahjongList[startIndex + 2].mMah) == MAHJONG_HUASE.MH_FENG)
        {
            return(false);
        }
        // 必须是同花色的
        MAHJONG_HUASE huase0 = getHuaSe(mahjongList[startIndex].mMah);
        MAHJONG_HUASE huase1 = getHuaSe(mahjongList[startIndex + 1].mMah);
        MAHJONG_HUASE huase2 = getHuaSe(mahjongList[startIndex + 2].mMah);

        if (huase0 != huase1 || huase1 != huase2)
        {
            return(false);
        }
        if (mahjongList[startIndex].mMah + 1 != mahjongList[startIndex + 1].mMah ||
            mahjongList[startIndex + 1].mMah + 1 != mahjongList[startIndex + 2].mMah)
        {
            return(false);
        }
        return(true);
    }
예제 #3
0
    public override void execute()
    {
        Character     character = (mReceiver) as Character;
        CharacterData data      = character.getCharacterData();
        int           dropIndex = -1;
        // 如果还未打缺一色,则需要打最少的一色牌
        SortedDictionary <MAHJONG_HUASE, List <MAHJONG> > huaseList = GameUtility.getHuaseList(GameUtility.toMahjongGroup(data.mHandIn));

        if (huaseList.Count > 2)
        {
            MAHJONG_HUASE minHuase = MAHJONG_HUASE.MH_MAX;
            foreach (var item in huaseList)
            {
                if (minHuase == MAHJONG_HUASE.MH_MAX || minHuase > item.Key)
                {
                    minHuase = item.Key;
                }
            }
            MAHJONG dropMah     = huaseList[minHuase][huaseList[minHuase].Count - 1];
            int     handInCount = data.mHandIn.Count;
            for (int i = 0; i < handInCount; ++i)
            {
                if (data.mHandIn[i] == dropMah)
                {
                    dropIndex = i;
                    break;
                }
            }
        }
        // 如果已经打缺了,则打最后一张
        if (dropIndex == -1)
        {
            dropIndex = data.mHandIn.Count - 1;
        }
        CommandCharacterDrop cmd = mCommandSystem.newCmd <CommandCharacterDrop>();

        cmd.mIndex = dropIndex;
        cmd.mMah   = data.mHandIn[dropIndex];
        mCommandSystem.pushCommand(cmd, character);
    }
예제 #4
0
    public static SortedDictionary <MAHJONG_HUASE, List <MAHJONG> > getHuaseList(List <MahInfo> mahjongList, bool includeFeng = false)
    {
        SortedDictionary <MAHJONG_HUASE, List <MAHJONG> > huaseList = new SortedDictionary <MAHJONG_HUASE, List <MAHJONG> >();
        int size = mahjongList.Count;

        for (int i = 0; i < size; ++i)
        {
            MAHJONG_HUASE huase = getHuaSe(mahjongList[i].mMah);
            if (!huaseList.ContainsKey(huase))
            {
                if (includeFeng || huase != MAHJONG_HUASE.MH_FENG)
                {
                    List <MAHJONG> temp = new List <MAHJONG>();
                    temp.Add(mahjongList[i].mMah);
                    huaseList.Add(huase, temp);
                }
            }
            else
            {
                huaseList[huase].Add(mahjongList[i].mMah);
            }
        }
        return(huaseList);
    }