Exemplo n.º 1
0
    /// <summary>
    /// 比较
    /// </summary>
    /// <param name="data"></param>
    /// <returns></returns>
    public static List <Hashtable> Comparison(List <Hashtable> maJiangList)
    {
        int sort = 1;
        List <Hashtable> listSingle = new List <Hashtable>();
        List <Hashtable> listPairs  = new List <Hashtable>();

        foreach (var item in maJiangList)
        {
            Hashtable maJiang = new Hashtable();
            maJiang["First"]  = item["First"];
            maJiang["Second"] = item["Second"];
            if (Convert.ToInt32(item["First"]) == Convert.ToInt32(item["Second"]))
            {
                maJiang.Add("Pairs", true);
                listPairs.Add(maJiang);
            }
            else
            {
                Hashtable newcard = SingleCompute(maJiang);
                listSingle.Add(newcard);
            }
        }
        if (pc == null)
        {
            pc = Instantiate(MaJiangComparer.GetInstance());
        }

        //对子排序
        listPairs.Sort(pc);
        //listPairs.Reverse();

        //单牌排序
        listSingle.Sort(pc);
        //listSingle.Reverse();

        List <Hashtable> resultList = new List <Hashtable>();

        foreach (var item in listPairs)
        {
            resultList.Add(item);
        }

        foreach (var item in listSingle)
        {
            resultList.Add(item);
        }
        //添加编号
        for (int i = 0; i < resultList.Count; i++)
        {
            //对子比较,当前的与上一副牌比
            if (Convert.ToBoolean(resultList[i]["Pairs"]) && i > 0 && Convert.ToInt32(resultList[i]["First"]) != Convert.ToInt32(resultList[i - 1]["First"]))
            {
                sort++;
                resultList[i].Add("Sorting", sort);
            }
            else if (i > 0 && Convert.ToInt32(resultList[i]["Point"]) != Convert.ToInt32(resultList[i - 1]["Point"]))
            {
                //筒子点数大的加1
                sort++;
                resultList[i].Add("Sorting", sort);
            }
            else if (i > 0)
            {
                //筒子相同点数,比最大
                int value1 = 0, value2 = 0;
                if (Convert.ToInt32(resultList[i]["First"]) >= Convert.ToInt32(resultList[i]["Second"]))
                {
                    value1 = Convert.ToInt32(resultList[i]["First"]);
                }
                else
                {
                    value1 = Convert.ToInt32(resultList[i]["Second"]);
                }
                if (Convert.ToInt32(resultList[i - 1]["First"]) >= Convert.ToInt32(resultList[i - 1]["Second"]))
                {
                    value2 = Convert.ToInt32(resultList[i - 1]["First"]);
                }
                else
                {
                    value2 = Convert.ToInt32(resultList[i - 1]["Second"]);
                }
                if (value1 > value2)
                {
                    sort++;
                    resultList[i].Add("Sorting", sort);
                }
                else
                {
                    resultList[i].Add("Sorting", sort);
                }
            }
            else
            {
                resultList[i].Add("Sorting", sort);
            }
        }
        //返回结果
        return(listPairs.Concat(listSingle).ToList <Hashtable>());
    }
Exemplo n.º 2
0
 void Awake()
 {
     instance = this;
 }