示例#1
0
        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);
        }
示例#2
0
        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));
        }
示例#3
0
        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);
        }