• 团队作业第3周——需求改进&系统设计(crtl冲锋队)


    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、最终测试:完整游戏最终测试

  • 相关阅读:
    串字符串下沙的沙粒
    格式返回jquery js 获取获得时间差,时间格式为
    类型数组perl6学习
    安装文件win7,ubuntu双系统的安装——准备工作
    下标注意【算法】冒泡排序与选择排序的递归实现
    容器结构Thrift的数据类型系统
    linux初次入门学习小结
    sata拷贝文件时候framebuffer 闪烁问题
    switch_root 到nfs根文件
    Linux内核中64 bit division
  • 原文地址:https://www.cnblogs.com/littlehui3/p/11862972.html
Copyright © 2020-2023  润新知