public void AddFigures(ChessElement chessElement) { var LegalPositions = new List <Position>(); int freePostionX = chessElement.CurrentPosition.x; int freePostionY = chessElement.CurrentPosition.y; FigureColor color = chessElement.Color; string name = chessElement.Name; int weight = chessElement.Weight; for (int i = 1; i <= 8; i++) { for (int j = 1; j <= 8; j++) { if (i == freePostionY && j == freePostionX) { if (_gameBoard[i, j] == weight) { throw new IndexIsNotFreeException(string.Format("Unable to add a new element in index {0} and {1}", j, i)); } else { _gameBoard[i, j] = weight; figureLists.Add(chessElement); LegalPositions = chessElement.GetAvelablePositions(); } } } } DisplayChessGame(LegalPositions); }
public void ShowHorseRoad(ChessElement horse) { int directedX = Convert.ToInt32(Console.ReadLine()); int directedY = Convert.ToInt32(Console.ReadLine()); AddFigures(new HorseElement(new Position { x = directedX, y = directedY }, horse.Color, horse.Name, horse.Weight)); }
public void DisplayChessGame(List <Position> LegalPositions) { Console.Clear(); //First we gonna write the numbers horizontal Console.Write(" "); for (int i = 1; i <= 8; i++) { Console.Write(" " + i + " "); } Console.WriteLine(); //We gonna write the Chess Desk for (int row = 1; row <= boards; row++) { Console.WriteLine(); Console.Write(" "); for (int k = 1; k <= boards; k++) { Console.Write(GameBoardHorizontal); //HorizontalSymbols to Write } Console.Write("+"); Console.WriteLine(); Console.Write(row + " "); for (int col = 1; col <= boards; col++) { if (figureLists.Count != 0) { if (_gameBoard[col, row] == 1) { var ListOFCorrespondingX = figureLists.FindAll(x => x.CurrentPosition.x == row); var SpecificElement = ListOFCorrespondingX.Find(y => y.CurrentPosition.y == col); Console.Write(GameBoardVertical + SpecificElement.Name + " "); } else if (_gameBoard[col, row] == -1) { var ListOFCorrespondingX = figureLists.FindAll(x => x.CurrentPosition.x == row); var SpecificElement = ListOFCorrespondingX.Find(y => y.CurrentPosition.y == col); Console.Write(GameBoardVertical + SpecificElement.Name + " "); } else if (_gameBoard[col, row] == 3) { var ListOFCorrespondingX = figureLists.FindAll(x => x.CurrentPosition.x == row); var SpecificElement = ListOFCorrespondingX.Find(y => y.CurrentPosition.y == col); Console.Write(GameBoardVertical + SpecificElement.Name + " "); } else if (_gameBoard[col, row] == -3) { var ListOFCorrespondingX = figureLists.FindAll(x => x.CurrentPosition.x == row); var SpecificElement = ListOFCorrespondingX.Find(y => y.CurrentPosition.y == col); Console.Write(GameBoardVertical + SpecificElement.Name + " "); } else { var PositionToShow = LegalPositions.FindAll(ColY => ColY.y == col); var PositionToShowPair = PositionToShow.Find(RowX => RowX.x == row); if (PositionToShowPair.x == row && PositionToShowPair.y == col) { Console.Write(GameBoardVertical + "*" + " "); } else { Console.Write(GameBoardVertical + " "); } } } else { Console.Write(GameBoardVertical + " "); } } Console.Write(GameBoardVertical); } //Last HorizontalSymbols Console.WriteLine(); Console.Write(" "); for (int k = 0; k < boards; k++) { Console.Write(GameBoardHorizontal); } Console.Write("+"); Console.WriteLine(); Console.WriteLine(); ChessElement horse = figureLists[figureLists.Count - 1]; Console.WriteLine(horse.Name + " " + horse.Weight + " " + _gameBoard[horse.CurrentPosition.y, horse.CurrentPosition.x]); ShowHorseRoad(horse); }