Пример #1
0
        private bool FindPlace4(Grid grid, int nrForm, int i, int j, bool found, Graph graph)
        {
            int n  = grid.getN();
            int nr = grid.getNrDisplay();

            int[,] table = new int[n, n];
            for (int x = 0; x < n; x++)
            {
                for (int y = 0; y < n; y++)
                {
                    table[x, y] = grid.getGrid()[x, y];
                }
            }

            Grid grid1 = new Grid(table, n, nr, -1);

            if (i < 2)
            {
                return(found);
            }
            else if (j + 1 == grid.getN() && grid.getRowSumOFGrid(i) == 0 && grid.getRowSumOFGrid(i + 1) == 0 &&
                     grid.getRowSumOFGrid(i + 2) == 0)
            {
                return(found);
            }
            else if (j + 1 == grid.getN())
            {
                return(FindPlace4(grid, nrForm, i - 1, 0, found, graph));
            }
            else if (grid1.PutTetris(nrForm, i, j))
            {
                grid1.setNrGrid(this.GetNr());
                graph.addEdge(grid.getNrGrid(), this.GetNr());
                graph.AddVertice();
                int x = this.GetNr() + 1;
                this.SetNr(x);
                gridRepo.addGrid(grid1);
                found = true;
                return(FindPlace4(grid, nrForm, i, j + 1, found, graph));
            }
            else
            {
                return(FindPlace4(grid, nrForm, i, j + 1, found, graph));
            }
        }
Пример #2
0
        public bool findPlaces(int nrForm, Graph graph)
        {
            LinkedList <int> leaf       = graph.findLeaf();
            bool             foundPlace = false;

            foreach (var l in leaf)
            {
                Grid grid = gridRepo.gridRepo.ElementAt(l);
                if (nrForm == 1)
                {
                    if (findPlace1(grid, 1, grid.getN() - 1, 0, false, graph))
                    {
                        foundPlace = true;
                    }
                    if (FindPlace3(grid, 6, grid.getN() - 4, 0, false, graph))
                    {
                        foundPlace = true;
                    }
                }
                else if (nrForm == 2)
                {
                    if (FindPlace2(grid, 2, grid.getN() - 2, 0, false, graph))
                    {
                        foundPlace = true;
                    }
                    if (FindPlace4(grid, 7, grid.getN() - 3, 0, false, graph))
                    {
                        foundPlace = true;
                    }
                    if (FindPlace4(grid, 9, grid.getN() - 3, 0, false, graph))
                    {
                        foundPlace = true;
                    }
                    if (FindPlace2(grid, 8, grid.getN() - 2, 0, false, graph))
                    {
                        foundPlace = true;
                    }
                }
                else if (nrForm == 3 || nrForm == 4)
                {
                    if (FindPlace2(grid, 3, grid.getN() - 2, 0, false, graph))
                    {
                        foundPlace = true;
                    }
                    if (FindPlace4(grid, 10, grid.getN() - 3, 0, false, graph))
                    {
                        foundPlace = true;
                    }
                    if (FindPlace4(grid, 12, grid.getN() - 3, 0, false, graph))
                    {
                        foundPlace = true;
                    }
                    if (FindPlace2(grid, 11, grid.getN() - 2, 0, false, graph))
                    {
                        foundPlace = true;
                    }
                }
                else if (nrForm == 5)
                {
                    if (FindPlace2(grid, 5, grid.getN() - 2, 0, false, graph))
                    {
                        foundPlace = true;
                    }
                    if (FindPlace4(grid, 13, grid.getN() - 3, 0, false, graph))
                    {
                        foundPlace = true;
                    }
                    if (FindPlace4(grid, 15, grid.getN() - 3, 0, false, graph))
                    {
                        foundPlace = true;
                    }
                    if (FindPlace2(grid, 14, grid.getN() - 2, 0, false, graph))
                    {
                        foundPlace = true;
                    }
                }
            }
            return(foundPlace);
        }