第1部分 开始编程之旅 1
第1章 Swift语言 3
1.1 计算机和程序 3
1.1.1 处理器和内存 3
1.1.2 程序 3
1.1.3 编程语言 4
1.2 游戏编程 5
1.3 游戏开发 6
1.3.1 小规模程序设计:编辑-编译-运行 7
1.3.2 大规模程序设计:设计-制定规范-实现 7
1.4 构建第一个Swift程序 8
1.5 打造第一款Swift游戏 11
1.6 观察结果 14
1.7 本章小结 15
第2章 游戏编程的基础知识 17
2.1 构建游戏模块 17
2.2 游戏场景 17
2.2.1 游戏循环 18
2.2.2 Swift中的游戏循环 19
2.3 程序的结构 21
2.3.1 应用程序类型 21
2.3.2 函数 22
2.3.3 语法示意图 24
2.3.4 函数调用 25
2.4 程序格式 25
2.4.1 注释 25
2.4.2 指令和多行代码 26
2.4.3 空行、空格和缩进格式 27
2.5 本章小结 27
第3章 创建游戏场景 29
3.1 基本类型和变量 29
3.1.1 类型 29
3.1.2 变量的声明和赋值 30
3.1.3 指令和表达式 33
3.2 运算符和复杂表达式 34
3.2.1 运算符 34
3.2.2 运算符的优先级 34
3.3 其他数值类型 35
3.4 DiscoWorld游戏 37
3.5 变量的作用域 40
3.6 本章小结 40
第4章 游戏数据资源 41
4.1 精灵对象的定位 41
4.2 加载并绘制图像 42
4.3 分辨率和宽高比 43
4.4 移动精灵对象 47
4.5 加载和绘制多个精灵对象 48
4.6 配置设备的方向 50
4.7 音乐和声音 51
4.8 本章小结 53
第2部分 Painter游戏 55
第5章 响应玩家输入 57
5.1 处理触摸输入 57
5.2 利用触摸位置修改游戏场景 60
5.3 基于触摸行为的条件执行 62
5.4 测试替代方案 64
5.5 比较运算符 65
5.6 逻辑运算符 66
5.7 布尔类型 66
5.8 调整颜色 68
5.9 注意事项 72
5.10 本章小结 73
第6章 处理飞行的球体 75
6.1 方法 75
6.2 参数名和标记 79
6.3 默认参数值 82
6.4 将指令整合至方法中 83
6.5 局部坐标系和世界坐标系 85
6.6 向游戏场景中添加球体 86
6.6.1 球体的射击行为 87
6.6.2 更新球体位置 89
6.7 固定时间步和可变时间步 90
6.8 更新球体颜色 92
6.9 本章小结 95
第7章 游戏对象类型 97
7.1 创建同一类型的多个对象 97
7.2 类 98
7.3 独立类中的输入处理 101
7.4 初始化对象 102
7.5 self关键字 105
7.6 利用静态变量访问其他对象 107
7.7 类的双重角色 108
7.8 编写包含多个实例的类 110
7.9 游戏中的随机性 111
7.10 计算随机速度和颜色值 113
7.11 更新油漆桶对象 114
7.12 本章小结 116
第8章 颜色和碰撞检测 117
8.1 表达颜色的不同方式 117
8.2 对象的数据访问 118
8.3 向类中加入计算属性 120
8.4 处理对象间的碰撞 122
8.5 值和引用 124
8.6 结构 127
8.7 本章小结 129
第9章 生命值 131
9.1 维护生命值 131
9.2 向玩家显示生命值 133
9.3 多次执行指令 134
9.4 递增计数器的简化形式 136
9.5 更加紧凑的循环语法 137
9.6 一些特例 141
9.6.1 不产生循环 141
9.6.2 无限循环 141
9.6.3 嵌套循环 142
9.7 重启游戏 143
9.8 本章小结 146
第10章 组织游戏对象 147
10.1 游戏对象间的相似性 147
10.2 继承机制 148
10.3 游戏对象和继承 152
10.4 ThreeColorGameObject的子类 154
10.5 Ball类 156
10.6 PaintCan类 158
10.7 多态 159
10.8 从现有类中继承 160
10.9 类的层次结构 161
10.10 本章小结 163
第11章 完成Painter游戏 165
11.1 添加运动效果 165
11.2 添加音效和音乐 166
11.3 维护积分榜 169
11.4 字符和字符串 170
11.5 特殊字符 171
11.6 添加App图标 171
11.7 其他注意事项 172
11.8 本章小结 174
第3部分 TUt’STomb游戏 175
第12章 高级输入处理 177
12.1 创建Touch对象 177
12.2 数组 179
12.3 字典 182
12.4 可选类型 182
12.5 存储多点触摸 184
12.6 简化触摸输入行为 186
12.7 将触摸事件链接至输入帮助类 188
12.8 拖曳精灵对象 191
12.9 本章小结 192
第13章 游戏物理学 193
13.1 游戏对象的基本类 193
13.2 游戏对象子类 194
13.3 向游戏对象中添加物理行为 195
13.4 交互行为 197
13.5 本章小结 201
第14章 游戏设置程序设计 203
14.1 游戏对象行为 203
14.2 动作 203
14.3 通过动作投掷宝物 205
14.4 其他宝物类型 208
14.5 将宝物变为石头 210
14.6 处理物理碰撞 211
14.7 本章小结 213
第15章 游戏状态 215
15.1 层次处理 215
15.2 添加标题画面 216
15.3 添加按钮并显示帮助对话框 218
15.4 覆盖图 220
15.5 本章小结 223
第16章 完成Tut’sTomb游戏 225
16.1 添加积分值 225
16.2 访问控制 227
16.3 使用自定义字体 228
16.4 添加发光体 230
16.5 添加音乐和音效 231
16.6 本章小结 232
第4部分 Penguin Pairs游戏 233
第17章 菜单和网格 235
17.1 网格布局中的游戏对象 235
17.2 类扩展 240
17.3 设置菜单 242
17.4 添加开/关按钮 243
17.5 定义滑块按钮 245
17.6 计算游戏对象的世界场景位置 245
17.7 Slider类 246
17.8 本章小结 250
第18章 游戏状态管理 251
18.1 基本的游戏管理状态 251
18.2 游戏状态管理器 252
18.3 将名称赋予节点中 253
18.4 添加状态并在其间切换 255
18.5 关卡菜单状态 257
18.6 本章小结 259
第19章 存储和恢复游戏数据 261
19.1 关卡的结构 262
19.2 从文件中读取数据 263
19.3 Tile类 266
19.4 关卡状态 266
19.4.1 利用switch处理各种情形 270
19.4.2 加载不同的贴图类型 272
19.5 维护玩家的进程 274
19.6 本章小结 277
第20章 游戏对象间的交互 279
20.1 定义运算符 279
20.2 企鹅对象的选取操作 280
20.3 更新动物对象 283
20.4 与其他游戏对象间的碰撞 286
20.5 维护配对的数量 289
20.6 本章小结 292
第21章 完成Penguin Pairs游戏 293
21.1 显示提示信息 293
21.2 显示帮助对话框 295
21.3 重置关卡 297
21.4 切换至下一个关卡 297
21.5 加入音效 300
21.6 其他注意事项 301
21.7 本章小结 301
第5部分 Tick Tick游戏 303
第22章 主要的游戏结构 305
22.1 游戏结构概述 305
22.2 关卡结构 306
22.3 水滴 307
22.4 Tile类 308
22.5 LevelState类 310
22.6 本章小结 312
第23章 动画效果 313
23.1 动画的含义 313
23.2 纹理贴图集 314
23.3 Animation类 315
23.4 多重动画 317
23.5 Player类 319
23.6 本章小结 323
第24章 物理知识 325
24.1 在游戏场景中锁定角色 325
24.2 在正确位置处设置角色 326
24.3 跳跃动作 327
24.4 跌倒动作 328
24.5 碰撞检测 329
24.6 获取包围盒 330
24.7 角色与贴图之间的碰撞 330
24.8 处理碰撞检测 332
24.9 本章小结 336
第25章 智能角色 337
25.1 火箭对象 337
25.1.1 创建并重置火箭对象 338
25.1.2 定义火箭对象的行为 339
25.2 巡行的敌方角色 340
25.2.1 基本的PatrollingEnemy类 340
25.2.2 不同的敌方角色类型 343
25.3 其他敌方角色类型 344
25.4 加载不同的敌方角色类型 346
25.5 本章小结 347
第26章 添加交互行为 349
26.1 收集水滴 349
26.2 冰块对象 350
26.3 敌方角色与玩家角色间的碰撞行为 351
26.4 添加垂直和水平方向上的滚屏 355
26.5 本章小结 357
第27章 完成Tick Tick游戏 359
27.1 设置计数器 359
27.1.1 调整计数器 361
27.1.2 计时器为0 362
27.2 添加山峰和云彩 364
27.3 显示帮助对话框 367
27.4 通关后的处理操作 367
27.5 本章小结 370