首页 技术 正文
技术 2022年11月7日
0 收藏 814 点赞 827 浏览 1760 个字

2、需求&原型改进:

1.问题:游戏中我方飞机和敌方飞机是怎么控制的?

改进:

在游戏中,我控制我方飞机,按下方向键飞机便向按下的方向移动,按下Z键,我方飞机发射子弹。

敌方飞机面向随机的方向移动,并向面向的方向发射子弹,子弹有cd,地图上敌机数量不会太多,所以不会出现没位置躲的情况,子弹按发射时的方向沿直线匀速射出。

分析:自上而下

A)找到这个游戏中的对象:窗体、敌方飞机、我方飞机、红色子弹(敌方)、蓝色子弹(我方)、爆炸

B)找到对象之间的关系:在窗体上有我方飞机和敌方飞机,我方飞机发射蓝色子弹,敌方飞机发射红色子弹,我方飞机遇到红色子弹后血量减1,血量为0时爆炸,敌方飞机遇到蓝色子弹后爆炸。我方飞机和对方飞机同属飞机类,红色子弹和蓝色子弹同属子弹类。

2.问题:飞机和子弹的属性有没有更加具体化?

改进:

飞机:

我方飞机:(类变量)长度、宽度、速度、位置、面向的方向、血量

(方法)  移动、打炮、减血

敌方飞机:长度、宽度、速度、位置、面向的方向

移动、发炮

炮弹:

红色炮弹:大小、颜色、速度、位置、方向

移动、碰撞

蓝色炮弹:大小、颜色、速度、位置、方向

移动、碰撞

爆炸:长度、宽度、位置

爆炸

3.问题:游戏核心玩法是怎样的?游戏什么时候通关,什么时候结束?

我方飞机基础血量为5

当我方飞机的子弹击中对方飞机的时候,对方飞机爆炸,之后被击中的飞机消失,游戏继续。当对方飞机的子弹击中我方飞机的时候,我方血量减1,当我方血量为0的时候,我方飞机爆炸,此时游戏结束。

3、系统设计:

游戏代码中核心的内容包括Plane接口、Missile接口、Prop接口、各个接口的实现类和MainFrame类。

1. Plane接口

属性:飞机接口是最主要的接口,包含了飞机的一些基本的属性,如初始坐标、移动速度、方向、血量等。

方法:

1 draw()方法,绘制飞机

2 move()方法则是控制飞机坐标移动

3 reload()方法用来构建子弹对象

4 fire()用来实现子弹发射

5  explode()方法处理爆炸

6   useProp()方法实现使用道具的效果

7   lifeControl()方法用于调整血量,碰到子弹和回血时使用

2. Missile接口(导弹接口)

属性:子弹的初始坐标x、y,子弹的存活情况、方向。

方法:

1 draw()方法,绘制子弹

2 move()控制子弹的移动

3 locate()返回当前子弹的坐标

4 isOut()判断子弹是否飞出界面及处理

5    isRed()判断是否敌方子弹

6    isBlue()判断是否我方子弹

3. MainFrame类

属性:主面板中属性较少,主要是一些对象创建的工作,也有一些全局变量,如有grade,记录玩家的分数。

方法:

1 paint()方法是最重要的方法之一,所有的可视化对象都必须在此方法中实例化,并绘制。包括飞机,子弹,墙壁,以及信息栏的文字信息,都需要在此方法中随主面板实时刷新,也因此能看到对象的移动。

2 update()方法是双缓冲技术的实现,主要画出一张虚拟图片,将要加载的内容绘制好,再拷贝到当前画板中。

3 startFrame()负责创建主面板,并初始化一些面板数据,如标题、背景色、可见性、窗口尺寸可更改性,还负责启动主线程。

4 main()启动程序

内部类:

1 paintThread 线程内部类,用于重绘面板

2 KeyMoniter 监听内部类,用于监听我方飞机的按键事件

3    BloodTool类

属性:道具的初始坐标x、y,宽高 w、h,记录移动的步数step,存活情况isLive,主面板引用tl,移动的轨迹数组postion[][]

方法:

1 构造方法BloodTool(),道具自身的draw()方法,绘制道具

2 moveProp()控制道具的不断移动

3 isMeet()得到当前道具的坐标及宽度和高度,用于碰撞检测

4、Alpha任务分配计划

主界面 林卓辉、周泓安
控制器模块 林卓辉、周泓安
炮弹类 郭绍华
道具类 刘世刚
飞机类 王梓

美术

叶剑庭

5、测试计划

1、开发时测试:后台主要是对游戏操作、功能代码能否正常运行测试,前端主要是界面是否正常的测试

2、Alpha测试:首次实现前后台对接的各种测试,保证功能、游戏能正常运行

3、Beta测试:面对外部用户的意见反馈进行开发测试

4、最终测试:完整游戏最终测试

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,090
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,567
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,415
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,187
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,823
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,906