目 录
第1篇 步入Java丛林:从Java 2 API开始
第1章 Java 2软件开发工具包 2
1.1 Java简史 2
1.2 为什么在游戏中使用Java 3
1.3 为Java准备系统 4
1.3.1 安装Java SDK 4
1.3.2 编译和运行Java程序 5
1.3.3 使用命令行 5
1.3.4 使用集成开发环境(IDE) 8
1.3.5 关于Java 2文档的说明 8
1.4 总结 8
第2章 预备:学习Java 2 API 10
2.1 Game Over!程序 10
2.1.1 import语句 11
2.1.2 给Java代码加注释 12
2.1.3 Java类声明 13
2.1.4 Java方法声明 13
2.1.5 Java中的代码块 14
2.1.6 Java程序组成部分的关键点回顾 14
2.2 比特和字节:原始的Java类型 14
2.2.1 基本的整数类型 15
2.2.2 浮点类型 16
2.2.3 Char类型 16
2.2.4 布尔型 17
2.2.5 String类型 17
2.2.6 强制转换变量类型 22
2.2.7 Java数据类型、数组和标识符需要记忆的要点 24
2.3 Java中的运算符 24
2.3.1 赋值运算符 24
2.3.2 比较运算符 25
2.3.3 算术运算符 26
2.3.4 自增和自减运算符 26
2.3.5 更多的整数运算符 27
2.3.6 使用点运算符 29
2.3.7 instanceof运算符 30
2.3.8 优先级顺序 30
2.3.9 关于运算符的记忆要点 31
2.4 条件语句 31
2.4.1 switch语句 32
2.4.2 Java中的循环语句 33
2.4.3 用break、continue和return提前退出循环 35
2.5 处理运行时异常 36
2.5.1 使用try和catch块 36
2.5.2 使用throws子句 38
2.5.3 关于流程控制语句的记忆要点 40
2.6 总结 40
2.7 练习 41
第3章 带有类的语言:Java面向对象程序设计 44
3.1 设计一个Java类 44
3.2 方法的魔法 46
3.3 关于方法的更多话题 48
3.3.1 构造函数方法 48
3.3.2 访问方法 49
3.3.3 类方法 49
3.3.4 “其他”方法 50
3.4 继承 52
3.5 抽象类 56
3.6 类修饰符 59
3.7 接口 61
3.8 快捷地创建类 62
3.9 包 64
3.10 总结 66
3.11 练习 66
第4章 Java API为你服务:常用Java类 67
4.1 java.lang包 67
4.1.1 java.lang.Object 67
4.1.2 java.lang.String 70
4.1.3 java.lang.StringBuffer 72
4.1.4 封装类 73
4.1.5 java.lang.Math 75
4.1.6 java.lang.System 76
4.1.7 java.lang.Cloneable 78
4.1.8 java.lang.Thread 80
4.2 java.io包 84
4.3 java.util包 86
4.3.1 java.util. StringTokenizer 86
4.3.2 java.util.Random 87
4.3.3 Java 2集合框架 88
4.4 总结 96
4.5 练习 96
第2篇 Java 2-D图像开发和抽象Window工具包
第5章 Applet基础 100
5.1 什么是Java applet 100
5.2 Applet和Application的比较 101
5.3 Applet的组成和生命周期 101
5.4 一个Applet例子 102
5.5 运行Java Applets 103
5.6 通用AWT组件 104
5.6.1 按钮 105
5.6.2 单选按钮(Radio Button) 107
5.6.3 作出重要选择 109
5.6.4 循环播放声音文件 111
5.6.5 文本域 115
5.6.6 标签 115
5.7 布局管理 116
5.7.1 FlowLayout类 116
5.7.2 GridLayout类 117
5.7.3 BorderLayout类 118
5.7.4 CardLayout类 118
5.8 容器(Container) 120
5.9 创建自定义组件 122
5.10 一个完整的例子 126
5.11 总结 136
5.12 练习 137
第6章 监听用户 138
6.1 EventListener接口 138
6.1.1 MouseListener接口 139
6.1.2 MouseMotionListener接口 140
6.1.3 KeyListener接口 146
6.1.4 其他的EventListener类 150
6.2 总结 150
6.3 练习 151
第7章 用Java 2-D来绘制图形、文字和图像(第一部分) 152
7.1 坐标空间 152
7.2 Graphics2D类 153
7.3 使用仿射变换 153
7.4 绘制形状 157
7.5 实例建模 160
7.6 Image类 162
7.7 更多的绘制和填充操作 166
7.7.1 Stroke接口 166
7.7.2 BasicStroke类 166
7.7.3 Paint接口 168
7.7.4 混和处理 175
7.8 处理文本 180
7.8.1 创建并画出文本 181
7.8.2 衍生字体 184
7.8.3 获取字体量度 184
7.9 总结 186
7.10 练习 187
第8章 用Java 2-D来绘制图形、文字和图像(第二部分) 188
8.1 享受几何学的乐趣 188
8.1.1 冲突检测 188
8.1.2 叠加几何 199
8.1.3 区域剪裁 202
8.2 设置绘制提示 206
8.3 图像处理 209
8.3.1 BufferedImage类 209
8.3.2 使用图像增强处理 213
8.4 总结 217
8.5 练习 217
第3篇 面向大众的Java游戏
第9章 2-D动画技术 222
9.1 使用MediaTracker类来下载内容 222
9.2 使用图像条进行更快的下载 228
9.3 创建屏外绘制缓冲器 238
9.3.1 创建BufferedGraphics类 245
9.3.2 通过VolatileImage类使用硬件加速 247
9.4 使用帧速同步来使动画完美 251
9.5 总结 255
9.6 练习 255
第10章 创建自定义的游戏实体类——Actor2D 256
10.1 Actor2D类的前奏 256
10.2 Actor2D,前端和中央 257
10.2.1 Actor2D类的支撑类 266
10.2.2 使Actor2D对象动起来 280
10.2.3 扩展Actor2D类 287
10.3 总结 298
10.4 练习 299
第11章 实现一个布景管理系统 300
11.1 为什么要实现一个布景管理器 300
11.2 Scene类 300
11.3 结论 340
11.4 练习 340
第12章 创建自定义的可视化控件和菜单 342
12.1 为什么要重新发明轮子 342
12.2 自定义控件概述 343
12.2.1 Component2D类 343
12.2.2 Label2D类 347
12.2.3 Button2D类 354
12.2.4 RadioButton2D类 365
12.2.5 创建Container2D类 375
12.2.6 Panel2D类 376
12.2.7 使用Menu2D创建自定义菜单 382
12.3 总结 392
12.4 练习 392
第13章 和其他人连接:创建客户端/服务器架构 394
13.1 Java网络编程概述 394
13.2 基于连接的网络和无连接网络之间的比较 394
使用TCP实现基于连接的网络 396
13.3 使用UDP实现无连接网络 417
13.4 总结 431
13.5 练习 432
第14章 Nodez!游戏简介 433
14.1 Beefheart上尉和他的Magic引擎 433
Magic引擎的结构 434
14.2 组装Nodez!游戏 436
14.3 Nodez!游戏概述 437
14.4 总结 458
附录A 使用javadoc工具 459
附录B 一些常用的Java“要”与“不要”原则 463
附录C 使用JNI创建一个gamepad阅读器 466
附录D 使用.JAR文件来部署Java applet 472
附录E 正确运行Java 2 applet 474
附录F Magic游戏引擎源码清单 475
附录G 更多的资源 545
附录H 配书光盘中有些什么 546