Exemplo n.º 1
0
        public void Input(out Piece piece, out Position destination, CheckerBoard board)
        {
            board.DrawBoard(null);
            piece       = null;
            destination = new Position(-1, -1);
            bool attackPossible = IsPossibleAttack(board);

            if (pieces.Count == 0)
            {
                return;
            }
            while (true)
            {
                Console.WriteLine("Select piece !!!");
                piece = SelectPiece(board);
                Console.WriteLine("Select destination !!!");
                destination = SelectDestination(board);

                if (attackPossible)
                {
                    if (piece.IsCorrectDestination(true, destination, board))
                    {
                        break;
                    }
                    Console.WriteLine("You have to atack !!!");
                }
                else
                {
                    if (piece.IsCorrectDestination(false, destination, board))
                    {
                        break;
                    }
                    Console.WriteLine("Can't move your piece to this position !!!");
                }
            }
            //zwraca pionek
            //i poprawny cel w sensie ze jest puste pole
        }
Exemplo n.º 2
0
        /// <summary>
        /// Function tries to make move selected piece to selected location.
        /// </summary>
        /// <param name="board">Current board</param>
        /// <param name="enemy"></param>
        /// <param name="piece">Selected piece</param>
        /// <param name="destination">Selected destination</param>
        /// <returns>Returns true if player finished his move</returns>
        public bool Turn(CheckerBoard board, Player enemy, Piece piece, Position destination)
        {
            bool attackFlag = IsPossibleAttack(board);

            if (!IsCorrectPiece(piece))
            {
                return(false);
            }
            if (!piece.IsCorrectDestination(attackFlag, destination, board))
            {
                return(false);
            }
            if (attackPiece != null && piece != attackPiece)
            {
                return(false);
            }
            if (piece.CanAttack(board))
            {
                numberOfMovementsWithoutAttack = 0;
                Piece deletePiece = piece.FunkcjaCudzika(board, destination);
                deletePiece.RemovePiece(board, enemy.pieces);
            }
            else
            {
                if (piece.GetType() == typeof(Queen))
                {
                    numberOfMovementsWithoutAttack++;
                }
            }
            piece.Move(board, destination);
            if (attackFlag && piece.CanAttack(board))
            {
                attackPiece = piece;
                return(false);
            }
            attackPiece = null;
            if (piece.IsBecomeQueen())
            {
                piece.ChangePieceToQueen(board, this.pieces);
            }
            return(true);
        }