第1章 手机游戏简介 1
1.1 手机游戏概述 1
1.1.1 手机游戏产业发展现状 1
1.1.2 手机游戏分类 2
1.2 手机游戏开发的特点 7
1.2.1 手机游戏与PC游戏的区别 7
1.2.2 手机游戏的优势 7
1.2.3 手机设备的局限 8
1.2.4 手机游戏的推广渠道 8
1.2.5 手机游戏的盈利模式 9
1.3 手机游戏策划 9
1.3.1 手机游戏策划的概念 9
1.3.2 手机游戏策划过程 11
1.4 本章小结 13
1.5 思考题 13
第2章 J2ME简介和编程环境 14
2.1 J2ME简介 14
2.2 J2ME平台体系结构 14
2.2.1 体系结构概述 15
2.2.2 J2ME总体结构 16
2.2.3 配置层 17
2.2.4 简表层 19
2.3 MIDlet 20
2.3.1 MIDlet概述 20
2.3.2 MIDlet的生命周期 22
2.3.3 MIDlet Suite 22
2.3.4 MIDlet的执行环境 25
2.4 编程环境 26
2.4.1 Java开发工具包 26
2.4.2 使用Java开发环境 27
2.4.3 IDE的安装和使用 32
2.4.4 WTK 38
2.4.5 WTK的安装 39
2.4.6 EclipseME 43
2.4.7 EclipseME插件的安装 44
2.4.8 EclipseME插件的配置 48
2.5 本章小结 51
2.6 思考题 51
第3章 高级用户界面 52
3.1 高级用户界面概述 52
3.1.1 LCDUI包 52
3.1.2 高级用户界面的类结构 53
3.1.3 Display和Displayable类 54
3.2 Command类与高级事件处理 55
3.2.1 Command类 55
3.2.2 高级事件处理 57
3.3 高级界面类 58
3.3.1 Screen类 58
3.3.2 TextBox组件 58
3.3.3 List组件 60
3.3.4 Alert组件 65
3.4 屏幕表单(Form类)及其组件 67
3.4.1 Form类 67
3.4.2 Item类和Item状态监听 70
3.5 本章小结 81
3.6 思考题 81
第4章 低级用户界面 82
4.1 Canvas类 82
4.1.1 Canvas类概述 82
4.1.2 Canvas的布局 83
4.1.3 绘制屏幕 84
4.1.4 重绘屏幕 86
4.1.5 用户交互 88
4.2 Graphics类 95
4.2.1 Graphics类概述 95
4.2.2 Graphics类的坐标系 95
4.2.3 画笔的风格和颜色 96
4.2.4 Graphics类的图形绘制 97
4.2.5 文字显示 103
4.2.6 图像绘制 107
4.3 动画实现 117
4.3.1 动画原理 117
4.3.2 线程动画 117
4.3.3 双缓冲技术 124
4.4 本章小结 127
4.5 思考题 127
第5章 数据存储 128
5.1 RMS概述 128
5.2 记录存储管理 129
5.2.1 记录仓库的打开与创建 129
5.2.2 记录仓库的关闭 130
5.2.3 记录仓库的其他操作 131
5.3 记录仓库的基本操作 132
5.3.1 添加记录 132
5.3.2 获取记录 134
5.3.3 修改记录 136
5.3.4 删除记录 137
5.4 记录仓库的高级操作 137
5.4.1 遍历记录 137
5.4.2 过滤记录 140
5.4.3 排序记录 141
5.4.4 RecordEnumeration与RecordStore的同步 142
5.4.5 线程操作问题 143
5.4.6 监视记录变化 143
5.5 本章小结 144
5.6 思考题 144
第6章 MIDP 2.0开发 145
6.1 MIDP 2.0简介 145
6.1.1 MIDP 2.0和MIDP 1.0的区别 145
6.1.2 game包的结构 145
6.1.3 game包中的类 146
6.2 GameCanvas类的使用 146
6.2.1 GameCanvas类 146
6.2.2 缓冲区屏幕 147
6.2.3 查询游戏按键状态 148
6.2.4 MIDP 2.0下的游戏主循环 150
6.3 Layer类 151
6.4 Sprite类 152
6.4.1 Sprite类介绍 152
6.4.2 Sprite帧概念 152
6.4.3 Sprite的帧序列 153
6.4.4 创建精灵对象 154
6.4.5 绘制精灵对象 154
6.4.6 参考像素点 155
6.4.7 精灵对象的变换 159
6.4.8 碰撞检测 162
6.5 TiledLayer类 162
6.5.1 图像贴图 163
6.5.2 单元格 164
6.5.3 TiledLayer用法示例 165
6.5.4 精灵与地图的碰撞 173
6.6 LayerManager类 175
6.6.1 图层管理 175
6.6.2 可视窗口与渲染 176
6.6.3 精灵与TiledLayer的碰撞 181
6.7 本章小结 182
6.8 思考题 183
第7章 网络与多媒体 184
7.1 GCF概述 184
7.2 GCF的层次结构 184
7.3 GCF的使用 185
7.4 MIDP的HTTP连接 186
7.4.1 HTTP连接简介 186
7.4.2 HTTP相关协议 187
7.4.3 HTTP的请求/应答模型 187
7.4.4 在MIDP中使用HTTP连接 190
7.4.5 使用HTTP来访问网络实例 192
7.5 Socket连接 193
7.5.1 客户端Socket 193
7.5.2 服务端Socket 197
7.6 Datagram连接 200
7.6.1 Datagram与Socket的差别 201
7.6.2 发送数据报 201
7.6.3 接收数据报 203
7.7 CMNET和CMWAP的通信方式 203
7.8 MMAPI编程 205
7.8.1 MMAPI概述 205
7.8.2 MMAPI特性 205
7.8.3 MMAPI体系结构 206
7.8.4 MMAPI包 208
7.8.5 MMAPI包的使用 210
7.9 本章小结 216
7.10 思考题 216
第8章 益智动作游戏——夏日大冒险 217
8.1 游戏策划和准备工作 217
8.1.1 游戏策划分析 217
8.1.2 游戏需求和准备工作 217
8.2 游戏架构 220
8.2.1 游戏的类结构 220
8.2.2 用户界面流程 220
8.2.3 文件结构 221
8.3 游戏关键技术和实现 222
8.3.1 闪屏Logo类 223
8.3.2 MyCanvas主类 225
8.3.3 Music音乐类 246
8.3.4 Map地图类 247
8.3.5 关卡 251
8.4 兼容性设计 253
8.5 本章小结 254
8.6 思考题 255
第9章 飞机射击游戏——雷霆战机 256
9.1 游戏策划和准备工作 256
9.1.1 游戏策划分析 256
9.1.2 游戏准备工作 257
9.2 游戏设计 258
9.2.1 游戏架构设计 258
9.2.2 用户界面流程 259
9.2.3 游戏设计的关键问题 260
9.3 游戏关键技术实现 260
9.3.1 MIDlet子类的实现 260
9.3.2 手机游戏的主框架实现 261
9.3.3 游戏地图的绘制 264
9.3.4 游戏中的主要角色类 269
9.3.5 控制游戏对象 288
9.3.6 碰撞检测 290
9.3.7 保存信息及读取信息 294
9.3.8 音效的处理 296
9.4 打包生成 297
9.4.1 打包生成jar文件 297
9.4.2 下载到手机 299
9.5 J2ME游戏的优化和注意事项 299
9.5.1 J2ME游戏的优化 299
9.5.2 注意事项 300
9.6 本章总结 301
9.7 思考题 301
第10章 角色扮演游戏——桃花园记 302
10.1 游戏策划及准备工作 302
10.1.1 游戏策划分析 302
10.1.2 游戏需求以及准备工作 302
10.2 游戏架构 305
10.2.1 游戏的类结构 305
10.2.2 游戏界面流程 305
10.2.3 游戏规则 306
10.3 游戏关键技术及实现 307
10.3.1 游戏画布MyCanvas类的实现 307
10.3.2 MyMap地图类的实现 328
10.3.3 MySprite精灵类的实现 331
10.3.4 角色排序 333
10.3.5 玩家与精灵类的通信 333
10.3.6 敌人的人工智能 334
10.3.7 游戏音乐实现 336
10.4 本章小结 337
10.5 思考题 337
第11章 休闲益智游戏——推推侠 338
11.1 游戏策划和准备工作 338
11.1.1 游戏策划分析 338
11.1.2 游戏准备工作 339
11.2 游戏架构 340
11.2.1 游戏的类结构 340
11.2.2 用户界面流程 341
11.3 游戏关键技术实现 342
11.3.1 GameMidlet类 342
11.3.2 GameData接口 343
11.3.3 GamePlayer玩家类 343
11.3.4 GameTools类 345
11.3.5 MyGameCanvas主画布类 345
11.3.6 GameMap地图类 359
11.3.7 GameMusic地图类 362
11.3.8 GameNpc怪物类 363
11.4 本章小结 367
11.5 思考题 367