コード例 #1
0
ファイル: Native.cs プロジェクト: cleebp/TieSim
 public static extern void UpdateFigure(FigureId figureId, SceneId sceneId);
コード例 #2
0
        //Метод создания структуры матрицы для Алгоритма-Х
        public void CreateMatrixStructur()
        {
            int headerCount = 0;

            for (int i = 0; i < board_array.GetLength(0); i++)
            {
                for (int j = 0; j < board_array.GetLength(1); j++)
                {
                    if (board_array[i, j] == 1)
                    {
                        node_coord[i, j] = new NodeCoord()
                        {
                            x = i, y = j
                        };
                        headerCount++;
                    }
                }
            }

            dlx.CreateHeadersNodes(headerCount + 12);

            Nodes.Node header_node = dlx.header_root.right;
            int        count       = 0;

            for (int i = 0; i < board_array.GetLength(0); i++)
            {
                for (int j = 0; j < board_array.GetLength(1); j++)
                {
                    if (node_coord[i, j] != null)
                    {
                        header_node.data = node_coord[i, j];
                        header_node      = header_node.right;
                        count++;
                    }
                }
            }

            figure_id = new FigureId[12];
            for (int i = 0; i < 12; i++)
            {
                FigureId figure_node_id = new FigureId()
                {
                    id = i
                };
                header_node.data = figure_node_id;
                ((Nodes.HeaderNode)header_node).isNodeID = true;
                header_node  = header_node.right;
                figure_id[i] = figure_node_id;
            }


            List <Figures.FigureItem> list = Figures.GetFigures();

            for (int f = 0; f < list.Count; f++)
            {
                int[,] cur_figures = (int[, ])list[f].figure.Clone();
                int figure_id = list[f].figure_id;
                for (int i = 0; i < board_array.GetLength(0); i++)
                {
                    for (int j = 0; j < board_array.GetLength(1); j++)
                    {
                        if (board_array[i, j] == 1)
                        {
                            NodeCoord[] c = CheckFigures(cur_figures, i, j);
                            if (c != null)
                            {
                                AddToStructureMatrix(cur_figures, figure_id, i, j, c);
                                rows_count++;
                            }
                        }
                    }
                }
            }
        }
コード例 #3
0
        //Добавления определенного положения фигуры в структуру матрицы, создаем Node для столбца
        private void AddToStructureMatrix(int[,] figure, int figure_id_, int i, int j, NodeCoord[] coord)
        {
            int       count = 0;
            ArrayList rows  = new ArrayList();

            //Добавляем Node в определенный столбец
            foreach (Nodes.HeaderNode header in dlx.headers_columns)
            {
                foreach (NodeCoord cord in coord)
                {
                    if (header.data == cord)
                    {
                        Nodes.Node newNode = new Nodes.Node();
                        newNode.data = cord;
                        header.AddNode(newNode);
                        rows.Add(newNode);

                        count++;
                        break;
                    }
                }
                if (count == coord.Length)
                {
                    break;
                }
            }

            FigureId figureId = null;

            for (int it = 0; it < figure_id.Length; it++)
            {
                if (figure_id[it].id == figure_id_)
                {
                    figureId = figure_id[it];
                    break;
                }
            }
            int c = 0;

            foreach (Nodes.HeaderNode header in dlx.headers_columns)
            {
                if (header.data == figureId)
                {
                    Nodes.Node new_node = new Nodes.Node();
                    new_node.data = figureId;
                    header.AddNode(new_node);
                    rows.Add(new_node);
                    break;
                }
                c++;
            }


            //Связываем Node с левым и правым Node
            Nodes.Node first_node = null;
            Nodes.Node last_node  = null;

            for (Nodes.Node node = dlx.header_root.right; node != dlx.header_root; node = node.right)
            {
                foreach (Nodes.Node row in rows)
                {
                    if ((first_node == null) && (row.data == node.data))
                    {
                        first_node = row;
                        last_node  = row;
                        continue;
                    }

                    if ((first_node != null) && (row.data == node.data))
                    {
                        last_node.right = row;
                        row.left        = last_node;
                        last_node       = row;
                    }
                }
            }
            last_node.right = first_node;
            first_node.left = last_node;
        }
コード例 #4
0
 public override string ToString()
 {
     return(string.Format("PlayerName: {0} | PlayerId: {1} | PlayerIndex: {2} | Tile: {3} | FigureId: {4}... | Motto: {5} | Gender: {6} | GroupName: {7}",
                          PlayerName, PlayerId, PlayerIndex, Tile, FigureId.Remove(10, FigureId.Length - 10), Motto, Gender, GroupName));
 }