Exemplo n.º 1
0
        public void UpdateMeshWorths(Pos next, bool isBlack = true, List <Pos> blackPoses = null, List <Pos> whitePoses = null)
        {
            if (blackPoses == null)
            {
                blackPoses = BlackPoses.ToList();
            }
            if (whitePoses == null)
            {
                whitePoses = WhitePoses.ToList();
            }
            for (int i = 0; i < 19; i++)
            {
                for (int j = 0; j < 19; j++)
                {
                    m_MeshWorths[i, j] = 0;
                }
            }

            foreach (var p in blackPoses)
            {
                SetMeshWorth(p, true);
            }
            foreach (var p in whitePoses)
            {
                SetMeshWorth(p, false);
            }

            if (EmptyPoses.Contains(next) && isBlack)
            {
                SetMeshWorth(next, true);
            }
            else if (EmptyPoses.Contains(next) && !isBlack)
            {
                SetMeshWorth(next, false);
            }

            m_BlackMeshes.Clear();
            m_WhiteMeshes.Clear();
            for (int i = 0; i < 19; i++)
            {
                for (int j = 0; j < 19; j++)
                {
                    if (m_MeshWorths[i, j] > 0)
                    {
                        m_BlackMeshes.Add(new Pos(i, j));
                    }
                    else if (m_MeshWorths[i, j] < 0)
                    {
                        m_WhiteMeshes.Add(new Pos(i, j));
                    }
                }
            }

            FillMeshEmpty(1);
        }