专业:软件工程二班
学号:201113040209
姓名:张鹏飞
指导老师:邓飞
1
目 录
1 绪论
1.1 选题目的及意义(或:本课题的开发背景)
1.2 系统概述
1.3 人员组成及分工
2 需求分析
3 总体设计
4 详细设计
5 系统实现
5.1 开发环境
5.2 关键技术
5.3 运行结果
6 软件测试
总结
参考文献
2
1 绪论
1.1 选题目的及意义
1.2 系统概述
实现能更换地图,任意定制属性参数,实现根据二进制描述的地图
自动寻找进攻路径,实现石材、木材、食物转换系统,实现包括单体快
速攻击的机枪塔、群体攻击的炸弹塔、减速塔、发射自动跟踪导弹的导
弹塔、远距离攻击的狙击塔、群体攻击的射线塔以及激光塔等在内的建
筑系统。
2 需求分析
现代网络上有太多的激烈型的网络游戏,偏益智类型的不多,小型
的、需要精心分析布局的更少之又少。
3 总体设计
3.1 本系统的主要功能
智力分析游戏
3.2 主要分布
3
如上图,对于一个塔防游戏而言,处理人物属性、行走路径、炮塔的种类、
攻击范围以及对象是要点,为了便于更换地图,把地图的数据结构定义为:
地图{
地图图片资源;
描述地图的整数型二维数组;
出发点坐标;
结束点坐标
};地图资源主要用 PS 绘制。
对于工人,工人之间的差别只有生命值、移动速度、防御力、攻击力、杀
死奖励等,因而不需要构建多个类,所有工人可共用一个 Peon 类.
对于武士,也只有生命值等,共用一个 Monster 类。
对于房子、房子类型、声音、工作分工、树木等光影效果,由于各自之间
相差甚远,故分别采用不同的类实现;
对于石材、木材、食物的管理及读取,定义了一个 Resources 类以统管和
计数。
3. 3 界面设计:
菜单界面设计如下:
4
点击关卡后进入游戏界面:
4 详细设计
5
4.1 设计思路流程图
主类
建立游戏窗口
创建游戏菜单面板
游戏面板
菜单面板
结束游戏
6
4.2 敌人移动实现流程
完成任
务
玩家 hp=die 返回
结束游戏
Cur_y++ crct_y=108
下移
P
hp<=0
左移 Cur_x++ Crct x=0
返回 fiase
右移 Cur_x-- Crct_x=3
6
获取下一步动作
4.3 程序中的主类
7
public Monster(double x, double y)
super(x, y, 2D);
rot = 0.0D;
moveTick = 0.0D;
wanderTime = 0;
hp = 100;
maxHp = 100;
moveTick = random.nextInt(12);
public Bitmaps()
throws IOException
8
{
logo = ImageIO.read(Bitmaps.class.getResource("/logo.gif"));
wonScreen =
ImageIO.read(Bitmaps.class.getResource("/winscreen.gif"));
BufferedImage src =
ImageIO.read(Bitmaps.class.getResource("/sheet.gif"));
yr -= 2D;
9
public InfoPuff(double x, double y, int image)
super(x, y, -1D);
z = 0.0D;
this.image = image;
z = 12D;
za = 0.29999999999999999D;
life = 0;
lifeTime = 80 + random.nextInt(60);
super(x, y, 4D);
stamina = 0;
yield = 0;
spreadDelay = random.nextInt(30000);
10
5.class House 实现房子的类型,消耗及生成各项指标。
super(x, y, type.radius);
buildDuration = 192;
animFrame = 0;
maxHp = 256;
hp = maxHp;
this.type = type;
11
{
duration;
rate /= 2D;
noise) * 0.59999999999999998D;
(double)duration;
i++;
p++;
public TowerApplet()
12
{
setSize(800, 480);
setLayout(new BorderLayout());
add(tower, "Center");
tower.unpause();
tower.pause();
13
public void destroy()
tower.stop();
public Resources()
wood = 100;
rock = 100;
food = 100;
switch(resourceId)
14
{
case 0: // '\0'
wood += count;
break;
case 1: // '\001'
rock += count;
break;
case 2: // '\002'
food += count;
break;
15
5 系统实现
5.1 开发环境
操作系统:Microsoft Windows XP
程序语言:Java1.6
IDE: MyEclipse8.5
5.2 关键技术
1.MyEclipse
.MyEclipse 其实 对那些软件开发者来说,这就是个代名词,使它们利器
的著作者和原材料。软件也是由它的软件组合开发出来的,.MyEclipse 用于开
发 java,J2EE 的.Eclipse 插件集合,它的功能十分强大也十分广泛。
MyEclipse 不断发展的版本:
16
于软件安装界面,推荐使用 link 方法进行插件安装,方便快捷。
2.java JDK1.6
关于 Sun JDK,大致可以分作如下几个阶段:
5.3 运行结果
17
6 软件测试
6.1、运行程序,进入菜单面板,测试鼠标经过及按下按钮时图案绘制是否
正常:
上图:鼠标经过时绘制正常
上图:鼠标按下时绘制正常
6.2、进入房子选择界面,测试鼠标经过按钮时绘制是否正常、选择房子
后能否正确建立游戏:
18
上图:鼠标未选择房子时,一片空地
上图:鼠标成功选择房子并由工人建成
6.3、测试建筑建筑选中、建筑升级、建筑删除后,指标改变是否正常:
上图:各项资源指数正常改变
6.4、当鼠标停在海面时,地图方向改变是否正常:
19
上图:鼠标放置前
上图:鼠标放置后
20
总结
参考文献
林良信 《Java JDK 6 学习笔记》
21
22