游戏人工智能编程案例精粹

游戏人工智能编程案例精粹
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] ,
2012-09
版次: 2
ISBN: 9787115291134
定价: 79.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 362页
字数: 702千字
正文语种: 简体中文
原版书名: Programming Game AI by Example
150人买过
  •   《游戏人工智能编程案例精粹(修订版)》是游戏人工智能方面的经典之作,畅销多年。它展示了如何在游戏中利用专业人工智能技术,并针对实际困难问题,给出了强有力的解决方法。

      《游戏人工智能编程案例精粹(修订版)》主要讲述如何使游戏中的角色具有智能的技术。本书首先介绍游戏角色的基本属性(包括速度、质量等物理属性)及常用数学方法。接着,深入探讨游戏智能体状态机的实现。通过简单足球游戏实例,本书给出用状态机实现游戏AI的例子。在图论部分,本书详细介绍图在游戏中的用途及各种不同的图搜索算法,并用一章的篇幅讨论了游戏中路径规划是如何完成的。此外,本书还对目标驱动的智能体的实现、触发器与模糊逻辑在游戏中的运用进行了讨论。为使智能体行为更加丰富、灵活、易于实现,本书还介绍了游戏脚本语言的优点,并以Lua脚本语言为例进行了说明。

      《游戏人工智能编程案例精粹(修订版)》适合对游戏AI开发感兴趣的爱好者和游戏AI开发人员阅读和参考。   Mat

      Buckland是一位自由职业程序员和技术作家。他在20世纪80年代为ZX

      Spectrum编写Waddington’s

      Monopoly的时候,对AI产生了兴趣,多年以来,他对于让计算机“思考”的热情丝毫没有减退。他是AI

      Techniques

      for

      Game

      Programming一书的作者,也是专注于AI教程的知名网站ai-junkie.com的创始人。他是AI

      Interface

      Standards

      Committee的成员,还是European

      Game

      Developers

      Conference圆桌会议的主持人。

       第1章 数学和物理学初探 

    1.1 数学 

    1.1.1 笛卡尔坐标系 

    1.1.2 函数和方程 

    1.1.3 三角学 

    1.1.4 矢量 

    1.1.5 局部空间和世界空间 

    1.2 物理学 

    1.2.1 时间 

    1.2.2 距离 

    1.2.3 质量 

    1.2.4 位置 

    1.2.5 速度 

    1.2.6 加速度 

    1.2.7 力 

    1.3 总结 



    第2章 状态驱动智能体设计 

    2.1 什么是有限状态机 

    2.2 有限状态机的实现 

    2.2.1 状态变换表 

    2.2.2 内置的规则 

    2.3 West World项目 

    2.3.1 BaseGameEntity类 

    2.3.2 Miner类 

    2.3.3 Miner状态 

    2.3.4 重访问的状态设计模式 

    2.4 使State基类可重用 

    2.5 全局状态和状态翻转(State Blip) 

    2.6 创建一个StateMachine类 

    2.7 引入Elsa 

    2.8 为你的FSM增加消息功能 

    2.8.1 Telegram的结构 

    2.8.2 矿工Bob和Elsa交流 

    2.8.3 消息发送和管理 

    2.8.4 消息处理 

    2.8.5 Elsa做晚饭 

    2.8.6 总结 



    第3章 如何创建自治的可移动游戏智能体 

    3.1 什么是自治智能体 

    3.2 交通工具模型 

    3.3 更新交通工具物理属性 

    3.4 操控行为 

    3.4.1 Seek(靠近) 

    3.4.2 Flee(离开) 

    3.4.3 Arrive(抵达) 

    3.4.4 Pursuit(追逐) 

    3.4.5 Evade(逃避) 

    3.4.6 Wander(徘徊) 

    3.4.7 Obstacle Avoidance(避开障碍) 

    3.4.8 Wall Avoidance(避开墙) 

    3.4.9 Interpose(插入) 

    3.4.10 Hide(隐藏) 

    3.4.11 Path Following(路径跟随) 

    3.4.12 Offset Pursuit(保持一定偏移的追逐) 

    3.5 组行为(Group Behaviors) 

    3.5.1 Separation(分离) 

    3.5.2 Alignment(队列) 

    3.5.3 Cohesion(聚集) 

    3.5.4 Flocking(群集) 

    3.6 组合操控行为(Combining Steering Behaviors) 

    3.6.1 加权截断总和(Weighted Truncated Sum) 

    3.6.2 带优先级的加权截断累计(Weighted Truncated Running Sum with Prioritization) 

    3.6.3 带优先级的抖动(Prioritized Dithering) 

    3.7 确保无重叠 

    3.8 应对大量交通工具:空间划分 

    3.9 平滑 



    第4章 体育模拟(简单足球) 

    4.1 简单足球的环境和规则 

    4.1.1 足球场 

    4.1.2 球门 

    4.1.3 足球 

    4.2 设计AI 

    4.2.1 SoccerTeam类 

    4.2.2 场上队员 

    4.2.3 守门员 

    4.2.4 AI使用到的关键方法 

    4.3 使用估算和假设 

    4.4 总结 



    第5章 图的秘密生命 

    5.1 图 

    5.1.1 一个更规范化的描述 

    5.1.2 树 

    5.1.3 图密度 

    5.1.4 有向图(Digraph) 

    5.1.5 游戏AI中的图 

    5.2 实现一个图类 

    5.2.1 图节点类(GraphNode Class) 

    5.2.2 图边类(GraphEdge Class) 

    5.2.3 稀疏图类(SparseGraph Class) 

    5.3 图搜索算法 

    5.3.1 盲目搜索(Uninformed Graph Searches) 

    5.3.2 基于开销的图搜索(cost-based graph searchs) 

    5.4 总结 



    第6章 用脚本,还是不用?这是一个问题 

    6.1 什么是脚本语言 

    6.2 脚本语言能为你做些什么 

    6.2.1 对话流 

    6.2.2 舞台指示(Stage Direction) 

    6.2.3 AI逻辑 

    6.3 在Lua中编写脚本 

    6.3.1 为使用Lua设置编译器 

    6.3.2 起步 

    6.3.3 Lua中的石头剪子布 

    6.3.4 与C/C++接口 

    6.3.5 Luabind来救援了! 

    6.4 创建一个脚本化的有限状态自动机 

    6.4.1 它如何工作? 

    6.4.2 状态(State) 

    6.5 有用的链接 

    6.6 并不是一切都这么美妙 

    6.7 总结 



    第7章 概览《掠夺者》游戏 

    7.1 关于这个游戏 

    7.2 游戏体系结构概述 

    7.2.1 Raven_Game类 

    7.2.2 掠夺者地图 

    7.2.3 掠夺者武器 

    7.2.4 弹药(Projectile) 

    7.3 触发器 

    7.3.1 触发器范围类(TriggerRegion) 

    7.3.2 触发器类(Trigger) 

    7.3.3 再生触发器(Respawning Trigger) 

    7.3.4 供给触发器(Giver-Trigger) 

    7.3.5 武器供给器(Weapon Givers) 

    7.3.6 健康值供给器(Health Giver) 

    7.3.7 限制生命期触发器(Limited Lifetime Trigger) 

    7.3.8 声音通告触发器(Sound Notification Trigger) 

    7.3.9 管理触发器:触发器系统(TriggerSystem)类 

    7.4 AI设计的考虑 

    7.5 实现AI 

    7.5.1 制定决策(Decision Making) 

    7.5.2 移动(Movement) 

    7.5.3 路径规划(Path Planning) 

    7.5.4 感知(Perception) 

    7.5.5 目标选择(Target Selection) 

    7.5.6 武器控制(Weapon Handling) 

    7.5.7 把所有东西整合起来 

    7.5.8 更新AI组件 

    7.6 总结 



    第8章 实用路径规划 

    8.1 构建导航图 

    8.1.1 基于单元 

    8.1.2 可视点 

    8.1.3 扩展图形 

    8.1.4 导航网 

    8.2 《掠夺者》游戏导航图 

    8.2.1 粗颗粒状的图 

    8.2.2 细粒状的图 

    8.2.3 为《掠夺者》导航图添加物件 

    8.2.4 为加速就近查询而使用空间分割 

    8.3 创建路径规划类 

    8.3.1 规划到达一个位置的一条路径 

    8.3.2 规划路径到达一个物件类型 

    8.4 节点式路径或边式路径 

    8.4.1 注释边类示例 

    8.4.2 修改路径规划器类以容纳注释边 

    8.4.3 路径平滑 

    8.4.4 降低CPU资源消耗的方法 

    8.5 走出困境状态 

    8.6 总结 



    第9章 目标驱动智能体行为 

    9.1 勇士埃里克的归来 

    9.2 实现 

    9.2.1 Goal_Composite::Process Subgoals 

    9.2.2 Goal_Composite::Remove AllSubgoals 

    9.3 《掠夺者》角色所使用的目标例子 

    9.3.1 Goal_Wander 

    9.3.2 Goal_TraverseEdge 

    9.3.3 Goal_FollowPath 

    9.3.4 Goal_MoveToPosition 

    9.3.5 Goal_AttackTarget 

    9.4 目标仲裁 

    9.4.1 计算寻找一个健康物件的期望值 

    9.4.2 计算寻找一种特殊武器的期望值 

    9.4.3 计算攻击目标的期望值 

    9.4.4 计算寻找地图的期望值 

    9.4.5 把它们都放在一起 

    9.5 扩展 

    9.5.1 个性 

    9.5.2 状态存储 

    9.5.3 命令排队 

    9.5.4 用队列编写脚本行为 

    9.6 总结 



    第10章 模糊逻辑 

    10.1 普通集合 

    集合运算符 

    10.2 模糊集合 

    10.2.1 用隶属函数来定义模糊的边界 

    10.2.2 模糊集合运算符 

    10.2.3 限制词 

    10.3 模糊语言变量 

    10.4 模糊规则 

    10.4.1 为武器的选择设计模糊语言变量 

    10.4.2 为武器的选择设计规则集 

    10.4.3 模糊推理 

    10.5 从理论到应用:给一个模糊逻辑模块编码 

    10.5.1 模糊模块类(FuzzyModule) 

    10.5.2 模糊集合基类(FuzzySet) 

    10.5.3 三角形的模糊集合类 

    10.5.4 右肩模糊集合类 

    10.5.5 创建一个模糊语言变量类 

    10.5.6 为建立模糊规则而设计类 

    10.6 《掠夺者》中是如何使用模糊逻辑类的 

    10.7 库博方法 

    10.7.1 模糊推理和库博方法 

    10.7.2 实现 

    10.8 总结 



    附录A C++模板 

    附录B UML类图 

    附录C 设置你的开发环境 



    跋 

    参考文献 
  • 内容简介:
      《游戏人工智能编程案例精粹(修订版)》是游戏人工智能方面的经典之作,畅销多年。它展示了如何在游戏中利用专业人工智能技术,并针对实际困难问题,给出了强有力的解决方法。

      《游戏人工智能编程案例精粹(修订版)》主要讲述如何使游戏中的角色具有智能的技术。本书首先介绍游戏角色的基本属性(包括速度、质量等物理属性)及常用数学方法。接着,深入探讨游戏智能体状态机的实现。通过简单足球游戏实例,本书给出用状态机实现游戏AI的例子。在图论部分,本书详细介绍图在游戏中的用途及各种不同的图搜索算法,并用一章的篇幅讨论了游戏中路径规划是如何完成的。此外,本书还对目标驱动的智能体的实现、触发器与模糊逻辑在游戏中的运用进行了讨论。为使智能体行为更加丰富、灵活、易于实现,本书还介绍了游戏脚本语言的优点,并以Lua脚本语言为例进行了说明。

      《游戏人工智能编程案例精粹(修订版)》适合对游戏AI开发感兴趣的爱好者和游戏AI开发人员阅读和参考。
  • 作者简介:
      Mat

      Buckland是一位自由职业程序员和技术作家。他在20世纪80年代为ZX

      Spectrum编写Waddington’s

      Monopoly的时候,对AI产生了兴趣,多年以来,他对于让计算机“思考”的热情丝毫没有减退。他是AI

      Techniques

      for

      Game

      Programming一书的作者,也是专注于AI教程的知名网站ai-junkie.com的创始人。他是AI

      Interface

      Standards

      Committee的成员,还是European

      Game

      Developers

      Conference圆桌会议的主持人。

      
  • 目录:
    第1章 数学和物理学初探 

    1.1 数学 

    1.1.1 笛卡尔坐标系 

    1.1.2 函数和方程 

    1.1.3 三角学 

    1.1.4 矢量 

    1.1.5 局部空间和世界空间 

    1.2 物理学 

    1.2.1 时间 

    1.2.2 距离 

    1.2.3 质量 

    1.2.4 位置 

    1.2.5 速度 

    1.2.6 加速度 

    1.2.7 力 

    1.3 总结 



    第2章 状态驱动智能体设计 

    2.1 什么是有限状态机 

    2.2 有限状态机的实现 

    2.2.1 状态变换表 

    2.2.2 内置的规则 

    2.3 West World项目 

    2.3.1 BaseGameEntity类 

    2.3.2 Miner类 

    2.3.3 Miner状态 

    2.3.4 重访问的状态设计模式 

    2.4 使State基类可重用 

    2.5 全局状态和状态翻转(State Blip) 

    2.6 创建一个StateMachine类 

    2.7 引入Elsa 

    2.8 为你的FSM增加消息功能 

    2.8.1 Telegram的结构 

    2.8.2 矿工Bob和Elsa交流 

    2.8.3 消息发送和管理 

    2.8.4 消息处理 

    2.8.5 Elsa做晚饭 

    2.8.6 总结 



    第3章 如何创建自治的可移动游戏智能体 

    3.1 什么是自治智能体 

    3.2 交通工具模型 

    3.3 更新交通工具物理属性 

    3.4 操控行为 

    3.4.1 Seek(靠近) 

    3.4.2 Flee(离开) 

    3.4.3 Arrive(抵达) 

    3.4.4 Pursuit(追逐) 

    3.4.5 Evade(逃避) 

    3.4.6 Wander(徘徊) 

    3.4.7 Obstacle Avoidance(避开障碍) 

    3.4.8 Wall Avoidance(避开墙) 

    3.4.9 Interpose(插入) 

    3.4.10 Hide(隐藏) 

    3.4.11 Path Following(路径跟随) 

    3.4.12 Offset Pursuit(保持一定偏移的追逐) 

    3.5 组行为(Group Behaviors) 

    3.5.1 Separation(分离) 

    3.5.2 Alignment(队列) 

    3.5.3 Cohesion(聚集) 

    3.5.4 Flocking(群集) 

    3.6 组合操控行为(Combining Steering Behaviors) 

    3.6.1 加权截断总和(Weighted Truncated Sum) 

    3.6.2 带优先级的加权截断累计(Weighted Truncated Running Sum with Prioritization) 

    3.6.3 带优先级的抖动(Prioritized Dithering) 

    3.7 确保无重叠 

    3.8 应对大量交通工具:空间划分 

    3.9 平滑 



    第4章 体育模拟(简单足球) 

    4.1 简单足球的环境和规则 

    4.1.1 足球场 

    4.1.2 球门 

    4.1.3 足球 

    4.2 设计AI 

    4.2.1 SoccerTeam类 

    4.2.2 场上队员 

    4.2.3 守门员 

    4.2.4 AI使用到的关键方法 

    4.3 使用估算和假设 

    4.4 总结 



    第5章 图的秘密生命 

    5.1 图 

    5.1.1 一个更规范化的描述 

    5.1.2 树 

    5.1.3 图密度 

    5.1.4 有向图(Digraph) 

    5.1.5 游戏AI中的图 

    5.2 实现一个图类 

    5.2.1 图节点类(GraphNode Class) 

    5.2.2 图边类(GraphEdge Class) 

    5.2.3 稀疏图类(SparseGraph Class) 

    5.3 图搜索算法 

    5.3.1 盲目搜索(Uninformed Graph Searches) 

    5.3.2 基于开销的图搜索(cost-based graph searchs) 

    5.4 总结 



    第6章 用脚本,还是不用?这是一个问题 

    6.1 什么是脚本语言 

    6.2 脚本语言能为你做些什么 

    6.2.1 对话流 

    6.2.2 舞台指示(Stage Direction) 

    6.2.3 AI逻辑 

    6.3 在Lua中编写脚本 

    6.3.1 为使用Lua设置编译器 

    6.3.2 起步 

    6.3.3 Lua中的石头剪子布 

    6.3.4 与C/C++接口 

    6.3.5 Luabind来救援了! 

    6.4 创建一个脚本化的有限状态自动机 

    6.4.1 它如何工作? 

    6.4.2 状态(State) 

    6.5 有用的链接 

    6.6 并不是一切都这么美妙 

    6.7 总结 



    第7章 概览《掠夺者》游戏 

    7.1 关于这个游戏 

    7.2 游戏体系结构概述 

    7.2.1 Raven_Game类 

    7.2.2 掠夺者地图 

    7.2.3 掠夺者武器 

    7.2.4 弹药(Projectile) 

    7.3 触发器 

    7.3.1 触发器范围类(TriggerRegion) 

    7.3.2 触发器类(Trigger) 

    7.3.3 再生触发器(Respawning Trigger) 

    7.3.4 供给触发器(Giver-Trigger) 

    7.3.5 武器供给器(Weapon Givers) 

    7.3.6 健康值供给器(Health Giver) 

    7.3.7 限制生命期触发器(Limited Lifetime Trigger) 

    7.3.8 声音通告触发器(Sound Notification Trigger) 

    7.3.9 管理触发器:触发器系统(TriggerSystem)类 

    7.4 AI设计的考虑 

    7.5 实现AI 

    7.5.1 制定决策(Decision Making) 

    7.5.2 移动(Movement) 

    7.5.3 路径规划(Path Planning) 

    7.5.4 感知(Perception) 

    7.5.5 目标选择(Target Selection) 

    7.5.6 武器控制(Weapon Handling) 

    7.5.7 把所有东西整合起来 

    7.5.8 更新AI组件 

    7.6 总结 



    第8章 实用路径规划 

    8.1 构建导航图 

    8.1.1 基于单元 

    8.1.2 可视点 

    8.1.3 扩展图形 

    8.1.4 导航网 

    8.2 《掠夺者》游戏导航图 

    8.2.1 粗颗粒状的图 

    8.2.2 细粒状的图 

    8.2.3 为《掠夺者》导航图添加物件 

    8.2.4 为加速就近查询而使用空间分割 

    8.3 创建路径规划类 

    8.3.1 规划到达一个位置的一条路径 

    8.3.2 规划路径到达一个物件类型 

    8.4 节点式路径或边式路径 

    8.4.1 注释边类示例 

    8.4.2 修改路径规划器类以容纳注释边 

    8.4.3 路径平滑 

    8.4.4 降低CPU资源消耗的方法 

    8.5 走出困境状态 

    8.6 总结 



    第9章 目标驱动智能体行为 

    9.1 勇士埃里克的归来 

    9.2 实现 

    9.2.1 Goal_Composite::Process Subgoals 

    9.2.2 Goal_Composite::Remove AllSubgoals 

    9.3 《掠夺者》角色所使用的目标例子 

    9.3.1 Goal_Wander 

    9.3.2 Goal_TraverseEdge 

    9.3.3 Goal_FollowPath 

    9.3.4 Goal_MoveToPosition 

    9.3.5 Goal_AttackTarget 

    9.4 目标仲裁 

    9.4.1 计算寻找一个健康物件的期望值 

    9.4.2 计算寻找一种特殊武器的期望值 

    9.4.3 计算攻击目标的期望值 

    9.4.4 计算寻找地图的期望值 

    9.4.5 把它们都放在一起 

    9.5 扩展 

    9.5.1 个性 

    9.5.2 状态存储 

    9.5.3 命令排队 

    9.5.4 用队列编写脚本行为 

    9.6 总结 



    第10章 模糊逻辑 

    10.1 普通集合 

    集合运算符 

    10.2 模糊集合 

    10.2.1 用隶属函数来定义模糊的边界 

    10.2.2 模糊集合运算符 

    10.2.3 限制词 

    10.3 模糊语言变量 

    10.4 模糊规则 

    10.4.1 为武器的选择设计模糊语言变量 

    10.4.2 为武器的选择设计规则集 

    10.4.3 模糊推理 

    10.5 从理论到应用:给一个模糊逻辑模块编码 

    10.5.1 模糊模块类(FuzzyModule) 

    10.5.2 模糊集合基类(FuzzySet) 

    10.5.3 三角形的模糊集合类 

    10.5.4 右肩模糊集合类 

    10.5.5 创建一个模糊语言变量类 

    10.5.6 为建立模糊规则而设计类 

    10.6 《掠夺者》中是如何使用模糊逻辑类的 

    10.7 库博方法 

    10.7.1 模糊推理和库博方法 

    10.7.2 实现 

    10.8 总结 



    附录A C++模板 

    附录B UML类图 

    附录C 设置你的开发环境 



    跋 

    参考文献 
查看详情
相关图书 / 更多
游戏人工智能编程案例精粹
游戏动漫人体结构&类人角色绘画造型技法
[韩]朴炯旭
游戏人工智能编程案例精粹
游戏UI设计原则与实例指导手册(第2版)
李世钦
游戏人工智能编程案例精粹
游戏故事写作(创意写作书系)
[美]迈克尔·布劳特(Michael Breault)
游戏人工智能编程案例精粹
游戏动漫人物设计指南 设计思想人体结构角色创作
[英]凯文·克罗斯利(Kevin Crossley)
游戏人工智能编程案例精粹
游戏力:竞技游戏设计实战教程 程弢
程弢 编著
游戏人工智能编程案例精粹
游戏造梦师 游戏策划职业入门教程
何振宇
游戏人工智能编程案例精粹
游戏架构设计与策划基础(第3版)
刘炎
游戏人工智能编程案例精粹
游戏与人
(法)罗歇·凯卢瓦(Roger Caillois)/著 余轶/译
游戏人工智能编程案例精粹
游戏出海合规指引
李金招;蒋晓焜
游戏人工智能编程案例精粹
游戏改变未来
简·麦戈尼格尔 著,湛庐文化 出品
游戏人工智能编程案例精粹
游戏建筑
李绪洪、陈怡宁 著
游戏人工智能编程案例精粹
游戏力:儿童游戏治疗基础与进阶(第2版)
[美]泰瑞·科特曼 著;张婷婷 秦红梅 郑淑丽 译
您可能感兴趣 / 更多
游戏人工智能编程案例精粹
亚拉山大的读心术(数学大师的逻辑课) 伦理学、逻辑学 [美]雷蒙德·m.斯穆里安(raymondm.smullyan)
[美]雷蒙德·m.斯穆里安(raymondm.smullyan)
游戏人工智能编程案例精粹
纳博科夫精选集第五辑
[美]弗拉基米尔·纳博科夫著
游戏人工智能编程案例精粹
九桃盘(美国二十世纪重要女诗人玛丽安·摩尔诗歌精选集,由知名女诗人和女性诗学研究者倪志娟倾情翻译)
[美]玛丽安•摩尔
游戏人工智能编程案例精粹
全新正版图书 制造德·戴维尼浙江教育出版社9787572276880
[美]理查德·戴维尼
游戏人工智能编程案例精粹
血泪之泣
[美]希瑟·丘·麦克亚当
游戏人工智能编程案例精粹
小学生趣味心理学(培养执行技能的40个练习,发展共情能力的46个练习,学会应对焦虑的40个练习 共3册) (美)莎伦·格兰德 王佳妮译
[美]莎伦·格兰德(sharon grand)
游戏人工智能编程案例精粹
(当代学术棱镜译丛)艺术批评入门:历史、策略与声音
[美]克尔·休斯顿
游戏人工智能编程案例精粹
金钱游戏(划时代增订版):深层透析金融游戏表象之下的规则与黑箱 长达60年盘踞金融畅销榜的现象级作品
[美]亚当·史密斯(Adam Smith) 著;刘寅龙 译
游戏人工智能编程案例精粹
矿王谷的黎明:塞拉俱乐部诉莫顿案与美国环境法的转变(精装典藏版)
[美]丹尼尔·P.塞尔米,(Daniel,P.Selmi)
游戏人工智能编程案例精粹
体式神话:瑜伽传统故事精粹(第二版) (从30个体式古老起源中汲取灵感与力量,内附精美插图)
[美]阿兰娜·凯瓦娅(Alanna Kaivalya)[荷]阿诸那·范德·库伊(Arjuna van der Kooij)
游戏人工智能编程案例精粹
诺奖作家给孩子的阅读课·生命教育(3-9年级,莫言余华的文学启蒙,垫高阅读起点,提升作文能力)
[美]海明威等
游戏人工智能编程案例精粹
蚯蚓的日记(全4册)【平装版】
[美]朵琳·克罗宁