示例#1
0
 public Cell(Cell ToCopyCell)
 {
     this.CellCoordinates = new Coordinates(ToCopyCell.GetXColumnCoordinate(), ToCopyCell.GetYRowCoordinate());
     this.WordMultiplier = ToCopyCell.GetWordMultiplier();
     this.LetterMultiplier = ToCopyCell.GetLetterMultiplier();
     if(ToCopyCell.GetTile() != null)
     {
         this.Tile = new Tile(ToCopyCell.GetTile());
     }
     else
     {
         this.Tile = null;
     }
     this.Visited = ToCopyCell.IsVisited();
 }
示例#2
0
        /// <summary>
        /// Metoda sprawdza czy da sie zgodnie z zasadami gry ulozyc slowo, ktora zaczyna sie od pola przekazanego w argumencie wywolania
        /// </summary>
        /// <param name="StartCell"></param>
        /// <param name="Vertical">Flaga informujaca czy sprawdzamy czy slowo da sie ulozyc w pionie czy poziomie</param>
        /// <returns></returns>
        public bool IsPositionCorrect(Cell StartCell, bool Vertical)
        {
            Container ConsideredContainer;
            Container LeftNeighbour;
            Container RightNeighbour;
            int CellIndex;
            Cell TempCell;

            if(Vertical) //jesli sprawdzamy czy da sie ulozyc slowo pionowo
            {
                ConsideredContainer = GameBoard.FindColumn(StartCell);
                CellIndex = StartCell.GetYRowCoordinate();
                LeftNeighbour = GameBoard.FindColumn(StartCell.GetXColumnCoordinate() - 1);
                RightNeighbour = GameBoard.FindColumn(StartCell.GetXColumnCoordinate() + 1);
            }
            else
            {
                ConsideredContainer = GameBoard.FindRow(StartCell);
                CellIndex = StartCell.GetXColumnCoordinate();
                LeftNeighbour = GameBoard.FindRow(StartCell.GetYRowCoordinate() - 1);
                RightNeighbour = GameBoard.FindRow(StartCell.GetYRowCoordinate() + 1);
            }

            TempCell = ConsideredContainer.Get(CellIndex - 1);
            if(TempCell != null) //Sprawdzenie, czy ponad polem nie znajduje sie juz jakis znak
            {
                if(TempCell.IsVisited())
                {
                    return false;
                }
            }

            if(StartCell.IsVisited())
            {
                for(int i = CellIndex + 1; i < GameBoard.GetBoardSide(); ++i) //Sprawdzenie, czy za rozpatrywanym polem pozostały jakies wolne pola
                {
                    if(!ConsideredContainer.Get(i).IsVisited())
                    {
                        return true;
                    }
                }
                return false;
            }

            if(GetFirstLetterDistance(ConsideredContainer, CellIndex + 1) <= Configuration.MaxLetterNumber) //plus jeden bo zaczynamy od pierwszego zajetego pola
            {
                return true;
            }
            if(GetFirstLetterDistance(LeftNeighbour, CellIndex) <= Configuration.MaxLetterNumber)
            {
                return true;
            }
            if(GetFirstLetterDistance(RightNeighbour, CellIndex) <= Configuration.MaxLetterNumber)
            {
                return true;
            }
            return false;
        }