第1章 问答游戏 1
1.1 第一步:出题 1
1.2 第二步:隐藏题目 8
1.3 第三步:重现题目 9
1.4 第四步:引入各种程序库 11
1.5 第五步:判断玩家所选答案是否正确 15
1.6 小结 19
第2章 文字冒险游戏 20
2.1 第一步:设计页面样式 21
2.2 第二步:实现页面跳转 25
2.3 第三步:添加道具栏及道具拖放功能 27
2.4 第四步:添加复杂的交互功能 35
2.5 第五步:添加历史记录导航功能 44
2.6 第六步:添加精彩的结局 46
2.7 小结 48
第3章 派对游戏 50
3.1 第一步:采用atom.js创建范例游戏 50
3.2 第二步:用canvas元素绘图 56
3.3 第三步:绘制鼠洞 58
3.4 第四步:绘制鼹鼠 60
3.5 第五步:将鼹鼠放入鼠洞 63
3.6 第六步:令鼹鼠从洞中钻出来 65
3.7 第七步:使玩家可通过敲击键盘来打鼹鼠 67
3.8 HTML5的<audio>标签并不尽如人意 70
3.9 小结 72
第4章 解谜游戏 73
4.1 第一步:用easel.js来渲染 74
4.2 第二步:渲染多个方块 78
4.3 第三步:创建成对出现的同色方块 81
4.4 第四步:配对并消除同色方块 83
4.5 第五步:隐藏与翻转图片 85
4.6 第六步:胜负判定 87
4.7 第七步:缓存与性能优化 91
4.8 第八步:将方块配对游戏改为字母认读游戏 93
4.9 小结 99
第5章 平台游戏 100
5.1 初识melon.js 100
5.2 第一步:创建瓦片地图 101
5.3 第二步:启动游戏 102
5.4 第三步:加入游戏角色 105
5.5 第四步:构建碰撞图层 107
5.6 第五步:行走与跳跃 108
5.7 第六步:标题画面 110
5.8 第七步:添加可供玩家收集的物品 112
5.9 第八步:添加敌人 113
5.10 第九步:添加能力提升道具 115
5.11 第十步:添加胜负判定机制并显示游戏信息 116
5.12 小结 118
第6章 格斗游戏 120
6.1 第一步:初识game.js 120
6.2 第二步:单独绘制精灵表中的各个精灵 123
6.3 第三步:处理两位玩家的输入 124
6.4 第四步:移动与变形 127
6.5 第五步:不要使两位玩家的输入互相阻塞 130
6.6 第六步:用位掩码记录按键状态 134
6.7 第七步:用掩码来检测碰撞 137
6.8 第八步:令两个游戏角色可以互相攻击对方 140
6.9 小结 145
第7章 飞行射击游戏 146
7.1 渲染有关的准备知识 146
7.2 第一步:初识gameQuery 148
7.3 第二步:添加“敌机” 150
7.4 第三步:创建己方战机 153
7.5 第四步:处理玩家与敌人的碰撞 156
7.6 第五步:发射子弹 157
7.7 第六步:为玩家提供多种武器 159
7.8 小结 162
第8章 第一人称射击游戏 164
8.1 第一步:初识Jaws 164
8.2 第二步:创建二维地图 166
8.3 第三步:增添玩家 169
8.4 第四步:用光线投射技术绘制俯视图 173
8.5 第五步:用光线投射技术实现伪三维效果 177
8.6 第六步:为玩家配备照相机 180
8.7 第七步:装点游戏场景 184
8.8 第八步:添加同伴 188
8.9 小结 195
第9章 角色扮演游戏 197
9.1 第一步:初识enchant.js 197
9.2 第二步:创建地图 199
9.3 第三步:增添玩家 202
9.4 第四步:添加碰撞层 207
9.5 第五步:绘制状态画面 209
9.6 第六步:与NPC对话 212
9.7 第七步:绘制道具栏 215
9.8 第八步:开设道具店 218
9.9 第九步:实现战斗界面 226
9.10 第十步:通过HTML5的本地存储API来存储游戏进度 236
9.11 小结 238
第10章 即时战略游戏 240
10.1 服务器 240
10.2 第一步:配置Node 243
10.3 第二步:用socket.io实现即时通信 246
10.4 第三步:用crafty.js创建Isometric地图 249
10.5 第四步:绘制棋子 251
10.6 第五步:移动棋子 255
10.7 第六步:使玩家只能控制己方棋子,并将对方棋子上面的图案隐藏起来 258
10.8 第七步:实现碰撞检测,令玩家能吃掉对方棋子并看到其图案 264
10.9 小结 268
第11章 如何继续提升游戏开发水平 270
11.1 本书已经讲过的内容 270
11.2 接下来应该学习的内容 271
附录A JavaScript基础 273
附录B 代码质量控制 280
附录C 资源 285