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(); }
/// <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; }