/// <summary>
        /// 获得棋步的音频字符串
        /// </summary>
        /// <param name="start">起始坐标</param>
        /// <param name="end">终止坐标</param>
        /// <returns></returns>
        public String get_audio_string(Coordinate start, Coordinate end)
        {
            ChessColour     player     = this.current_player;
            PieceType       piece      = this[start].type;
            CoordinateDelta delta      = end - start;
            VerticalLine    start_line = ChessPosition.get_vertical_line(
                start, player);
            VerticalLine end_line = ChessPosition.get_vertical_line(
                end, player);
            MoveDirection direction = ChessPosition.get_move_direction(
                delta, player);
            PieceIdentifier id;

            switch (piece)
            {
            default:
                throw new ArgumentOutOfRangeException("棋子种类越界!");

            case PieceType.ADVISOR:
            case PieceType.BISHOP:
                return(ChessMove.to_audio_name(
                           player, piece, start_line, direction, end_line));

            case PieceType.CANNON:
            case PieceType.ROOK:
            case PieceType.PAWN:
                id = this.get_identifier(start);
                if (direction == MoveDirection.SIDEWARD)
                {
                    return(ChessMove.to_audio_name(
                               id, player, piece, start_line, direction, end_line));
                }
                return(ChessMove.to_audio_name(
                           id, player, piece, start_line, direction, delta));

            case PieceType.KING:
                if (direction == MoveDirection.SIDEWARD)
                {
                    return(ChessMove.to_audio_name(
                               player, piece, start_line, direction, end_line));
                }
                return(ChessMove.to_audio_name(
                           player, piece, start_line, direction, delta));

            case PieceType.KNIGHT:
                id = this.get_identifier(start);
                return(ChessMove.to_audio_name(
                           id, player, piece, start_line, direction, end_line));
            }
        }