コード例 #1
0
        public void Turn(CheckerBoard board)
        {
            bool     attackFlag = IsPossibleAttack(board);
            Piece    piece;
            Position destination;

            while (true)
            {
                Input(out piece, out destination, board);
                if (piece.IsCorrectDestination(attackFlag, destination, board))
                {
                    break;
                }
            }

            if (attackFlag)
            {
                Piece deletePiece = piece.FunkcjaCudzika(destination);
                deletePiece.RemovePiece(board, pieces);
            }
            piece.Move(board, destination);

            while (piece.CanAttack(board))
            {
                Piece pp;

                while (true)
                {
                    Input(out pp, out destination, board);
                    if (pp.Equals(piece))
                    {
                        if (piece.IsCorrectDestination(attackFlag, destination, board))
                        {
                            break;
                        }
                    }
                }

                Piece deletePiece = piece.FunkcjaCudzika(destination);
                deletePiece.RemovePiece(board, this.pieces);
                piece.Move(board, destination);
            }
            if (piece.IsBecomeQueen())
            {
                piece.ChangePieceToQueen(board, this.pieces);
            }
        }
コード例 #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);
        }