第一部分 基础篇 1
第1章 C++平台与AI-CODE概述 1
1.1 教育理念 1
1.1.1 传统教育 1
1.1.2 游戏教育理念 1
1.1.3 游戏化学习 2
1.2 机器人编程游戏的历史 3
1.2.1 AI-CODE的诞生和发展 3
1.2.2 AI-CODE游戏教育系统简介 4
1.2.3 AI-CODE两大主题 5
1.3 程序和算法 6
1.3.1 面向对象程序设计思想 11
1.3.3 C++语言概述 12
1.3.2 C++语言简介 12
1.3.4 C++平台、环境说明 13
1.3.5 C++与C语言的异同 14
1.4 快速体验 14
1.4.1 下载与安装AI-CODE 14
1.4.2 我的快乐竞技之旅 17
1.4.3 虚拟机器人运行平台——AIRobot 19
1.4.4 图形编辑器——机器人快车 20
1.4.5 代码编辑器——CodeCanvas 21
第2章 AI-CODE的数学与物理知识 22
2.1 数学知识 22
2.1.1 坐标系统 22
2.1.2 三角几何学与方向 24
2.1.3 离散数学 26
2.1.4 数学函数 27
2.2.1 机器人解剖 33
2.2 物理知识 33
2.2.2 机器人速度、距离、力 34
2.2.3 子弹能量、热、速度 36
2.2.4 Force与动量守恒定理 37
2.3 基本参数 42
2.3.1 系统时钟 42
2.3.2 其他辅助参数 42
第3章 图形编程—快速步入程序之门 45
3.1 学习目标与任务 45
3.2 机器人快车概述 45
3.2.1 机器人快车的安装与卸载 46
3.2.2 机器人快车简介 46
3.2.3 流程模块拖拉编程 48
3.3 向战场中央靠拢机器人 54
3.4 机器人快车函数封装 57
3.5 小结与练习 59
第4章 第一个C++机器人 60
4.1 学习目标与任务 60
4.2 编辑、编译、运行C++机器人 60
4.3 机器人开发 62
4.3.1 AI-CODE开发目录设置 62
4.3.2 创建First机器人 63
4.3.3 机器人名称与hpp头文件 69
4.4 FirstRobot结构解析 71
4.4.1 Action与onTick处理函数 71
4.4.2 常用函数 73
4.5 初识对象、类与继承 74
4.5.1 面向对象思想 74
4.5.2 First类及AI-TANK类图 76
4.5.3 AI-TANK常用头文件 77
4.6.1 关键字与注释码 86
4.6.2 经典例子机器人说明 86
4.6 知识扩展 86
4.6.3 新型头文件与名字空间 87
4.7 小结与练习 88
第二部分 中级篇 89
第5章 基本运动与C++语言基础 89
5.1 学习目标与任务 89
5.2 基本运动策略 89
5.3 直线运动与C++基本元素 90
5.3.1 运动原理分析 90
5.3.2 绕墙走机器人剖析 91
5.3.3 数据类型、表达式、If-else控制 93
5.4 指定方向或位置运动 99
5.4.1 运动原理分析 99
5.4.2 heading与bearing方向解析 102
5.4.3 SuperCenter机器人剖析 104
5.4.4 C++代码规范 105
5.5 曲线运动 111
5.5.1 运动原理分析 111
5.5.2 圆周与倒8字运动机器人剖析 112
5.5.3 while、for流程控制 116
5.6 扩展知识 122
5.6.1 变量与常量定义 122
5.6.2 三角函数与C++函数 123
5.6.3 switch分支语句 123
5.6.4 运算符和赋值概念 124
5.6.5 基本防御组合应用分析 124
5.7 小结与练习 125
6.2.2 相关事件的处理 126
6.2 基本瞄准策略 126
6.2.1 三大基本瞄准策略 126
第6章 基本瞄准与函数 126
6.1 学习目标与任务 126
6.3 定点瞄准 127
6.4 线性预测瞄准 128
6.4.1 提前量直线瞄准原理分析与正弦原理应用 129
6.4.2 提前量直线瞄准机器人剖析 131
6.4.3 直线迭代瞄准与#define关键字 133
6.5 圆周预测瞄准与C++函数 134
6.5.1 圆周预测瞄准原理分析 134
6.5.2 圆周预测瞄准机器人剖析 138
6.5.3 C++函数详析 140
6.6 小结与练习 144
7.1 学习目标与任务 145
7.2.1 信息收集机器人 145
7.2 信息收集与数组 145
第7章 战争情报员与数组、指针 145
第三部分 高级篇 145
7.2.2 C++数组 146
7.3 指针在AI-TANK中的应用 150
7.4 扩展知识 154
7.5 小结与练习 154
8.2.1 躲避子弹原理 156
8.2 躲避子弹机器人 156
8.1 学习目标与任务 156
第8章 类和对象实现避弹避墙 156
8.2.2 躲避子弹机器人剖析 157
8.2.3 子弹类实现 160
8.3 对象和类 161
8.3.1 面向对象概述 161
8.3.2 类与结构体 162
8.3.3 类和对象的定义与声明 163
8.3.4 深入研究new运算符 165
8.3.5 构造函数与析构函数 167
8.4 因数避墙机器人 169
8.4.1 因数避墙原理 169
8.4.2 因数避墙机器人剖析 170
8.4.3 因数避墙机器人的改进与扩展 173
8.4.4 const关键字 175
8.4.5 static关键字 176
8.5 扩展知识 180
8.5.1 动态内存分配 180
8.5.2 数据抽象与信息隐藏 180
8.5.3 对机器人进行管理 181
8.6 小结与练习 184
第9章 继承、多态实现高级机器人 185
9.1 学习目标与任务 185
9.2 高级运动策略与继承、多态性 185
9.2.1 高级运动策略分析 185
9.2.2 高级运动机器人实现 188
9.3 C++继承与多态 200
9.3.1 继承基本概念 200
9.3.2 各种继承方式 203
9.3.3 在派生类中使用构造函数和析构函数 204
9.3.4 多重继承 206
9.3.5 多态性的概念 207
9.3.6 虚函数与虚析构函数 207
9.4 反重力运动机器人剖析 210
9.5 高级瞄准策略 215
9.5.1 高级瞄准策略分析 215
9.5.2 振荡瞄准机器人 215
9.5.3 模式匹配瞄准机器人 220
9.5.4 统计学瞄准、虚拟子弹、波 227
9.5.5 其他瞄准算法 239
9.6.1 随机运动策略介绍 240
9.6 扩展知识 240
9.6.2 this指针 241
9.6.3 AI-TANK Point2D二维点类 241
9.7 小结与练习 242
第10章 战略合成与运算符重载、模板 243
10.1 学习目标与任务 243
10.2 设计可重用机器人结构 243
10.3 运算符重载 245
10.3.1 Action事件中的运算符重载 245
10.3.2 用作类成员与友元函数的运算符函数 252
10.3.3 重载一元、二元运算符 253
10.3.4 重载流插入与流读取运算符 255
10.4 模板 255
10.4.1 函数模板 255
10.4.2 类模板 257
10.4.3 模板与友元、static关系 258
10.5 C++机器人编程接口 259
10.6 扩展知识 263
10.6.1 类型之间的转换 263
10.6.2 友元的概念 264
10.7 小结与练习 267
第11章 异常调试与Record机器人 268
11.1 学习目标与任务 268
11.2 调试机器人 268
11.2.1 AI-TANK控制台 268
11.2.2 输出变量的值 270
11.2.3 AI-TANK调试函数 272
11.2.4 C++字符与字符串处理简介 273
11.3 C++异常 274
11.4 Record机器人 280
11.5.1 C++IO流 281
11.5 C++IO流与文件 281
11.5.2 C++文件概述 285
11.6 扩展知识 290
11.7 小结与练习 293
第12章 团队作战实现 294
12.1 学习目标与任务 294
12.2 团队作战机制与通信兵 294
12.2.1 创建机器人团队 294
12.2.2 团队内的通讯 295
12.3 团队作战机器人 298
12.3.1 混战避敌原理 298
12.3.2 混战算法设计 299
12.3.3 混战避敌代码的实现 301
12.3.4 混战避敌算法改进与扩展 304
12.4 小结与练习 305
13.2.1 打开机器人图形控制 306
13.2.2 绘图机器人实现 306
第13章 高级调试与绘图机器人 306
13.2 美丽的轨迹图 306
13.1 学习目标与任务 306
13.3 机器人绘图类实现原理 308
13.4 小结与练习 314
第四部分 专家篇 315
第14章 智能机器人 315
14.1 人工智能 315
14.1.1 人工智能概念 315
14.1.2 人工智能的研究和应用领域 316
14.1.3 AI-TANK在人工智能领域的研究范围 318
14.2 强化学习机器人 319
14.2.1 原理概述 319
14.2.2 机器人设计分析 321
14.2.3 算法设计 326
14.3 神经网络机器人 328
14.3.1 原理概述 328
14.3.2 机器人设计分析 333
14.3.3 反向传播算法设计 337
14.4 遗传算法机器人 342
14.4.1 原理概述 342
14.4.2 预设策略进化机器人剖析 348
14.4.3 遗传操作机器人 350
14.4.4 中间解释程序进化机器人 351
14.5 机器学习机器人 354
14.5.1 机器学习原理 354
14.5.2 Bayesian团队机器人设计 358
14.5.3 算法设计 359
15.1 联赛系统 363
第15章 联赛系统、XML与内部机制 363
15.2 机器人配置与启动原理 366
15.3 机器人编程接口与内核 368
15.4 XML入门 379
15.5 XML DOM模型实现机器人通信 381
第16章 AI-CODE外传 389
16.1 策略流派 389
16.2 天才创意机器人 390
16.2.1 克隆机器人Dolly 390
16.2.2 撞击攻击机器人RamFire 391
16.2.3 跟踪者Tracker 392
16.2.4 舞蹈机器人Dancer 393
16.2.5 振动波绘图机器人Shining 395
附录1 章节机器人对照表 397
附录2 知识点 398
参考文献 401