第二次迭代——软件计划

软件设计

1、 制订规范

1.1、命名规范

(1)、人物基类文件

        role.h文件实现基类的编写和透明贴图函数的存放

(2)、人物角色设计文件

        统一为头文件,为人物英文名称.h,如K.h表示K的人物设计的头文件。
        一个角色对应一个头文件。

(3)、人物角色各种功能函数

        使用英文释义:
        Stand()—— 站立函数;RightMove()——  右移函数;
        LeftMove()—— 左移函数;Jump()——  跳跃函数;
	fistAttack()—— 拳击函数;legAttack()——  腿击函数
	skill_I、skill_II、skill_III()—— 技能1、2、3函数

(4)、图片计数变量的设计

在进行人物功能函数的coding时,需要类中的变量来进行记录动作进行位置。
统一设计为:count_xxxx;如count_stand、count_move等。

(5)、图片命名

对于一个角色的图片文件,我们将其存放在source文件家中,
譬如对于K的图片文件都存储在source\\K\\......
对于左边的拳击图片命名为K1_拳击 (%d),%d表示拳击的第几张图。

1.2、图标样式

原则上,应该能让使用者一看即能看懂该图标所代表的功能。
要求无水印,拥有该图标的使用权。

1.3、交流方式和工作纪律

交流方式:

              随时群内交流,定时线下讨论

工作纪律:

              要求能够在规定的时间内,完成应该完成的任务。

2、 设想供选择的方案

自顶向下,逐步细化的设计方法:

三次迭代完成各项人物,分别在每次迭代完成后完成一定的任务,能够实现相应
的操作。

模块化设计方法:

        将总体的任务分为多个模块,不同的人开发不同的模块。

3、 方案选择与推荐

针对以上系统要完成的功能,推荐本系统总体设计采用自顶向下,逐步细化的设计
方法,在需求分析中各次迭代的任务大致写完,所以只需按迭代要求在规定时间内
完成即可完成游戏的编写。

4、 基类子类说明和接口分析
在这里插入图片描述

外部接口:

virtual void InitImage() =0;//资源初始化
virtual void Stand(role* p2)= 0;//站立动作
virtual void Beaten(role*p2) = 0;//挨打
virtual void Defend(role*p2) = 0;//防御
……

即role基类中各种虚函数,对于每一个角色来说各自的外部接口所做的动作都是不同的,但是都可以通过role类型的指针来进行操作,这样十分有利于后续command()函数的coding。

5、 游戏总结构设计

int main()

{

int another=1;

While(another==1)
在这里插入图片描述

system(“PAUSE”);
return 0;

}

6、 其他设计

6.1、安全性设计

按以下原则进行安全性设计:

保护最薄弱环节原则,纵深防御原则,故障保护原则,最小特权原则,分割原则.
各工作人员将自己所做的修改存放在修改日记中。
对于各人物技能的释放:不能超过对应的窗口位置
对于各人物的移动:也不能超过对应的窗口位置

6.2、故障处理设计

故障:

某人物存在某些动作异常,不符合预期标准。
某人物血量到0时,操作界面未按要求结束还可以操作。
规定时间到0时,操作界面未按要求结束还可以操作。
角色选择出错,不符合预期。

针对这些故障,我们设计了一个暂停,一个返回键,可以直接返回游戏初始界面重新开始游戏,同时用户可通过初始界面的按钮将该故障上报。

6.3、可维护性设计

对于该游戏运营后,所产生的改正错误、扩充游戏功能、人物等问题,在软件开发
工程中即设置一个用于系统检测维护的专用函数,Check()。在Check中,对于
增加后的游戏的原各项功能做一个总体检验,看是否有合理的输出。除此之外,还
添加一个功能扩充函数AddFunc()以及人物普子类Sub_role,普遍适用于各种功
能、人物添加,每次添加功能、人物后,再预置一个功能扩充函数或人物普子类。

7、 详细设计

总体流程图

在这里插入图片描述

7.1、拳皇游戏系统总体控制

实现拳皇游戏系统的总体流程控制
伪代码:

Function main
	进入游戏
	基本选择
	对战开始
	对战结束
	重开退出
End Function main

7.2、基本选择
实现拳皇游戏的基本选择
伪代码:

Function KofChoose
	加载人物选择界面
	P1、P2选择人物
	选择背景图片、背景音乐
	转到对战开始模块
End Function KofChoose

7.3、对战开始

实现拳皇游戏对战
伪代码:

Function FightBegin
	加载对战背景图片、背景音乐
	P1、P2进行对战
	转到对战结束模块
End Function FightBegin

7.4、对战结束

实现拳皇游戏结束
伪代码:

Function FightEnd
	加载获胜方庆祝姿势
	转到重开退出模块
End Function FightEnd

7.5、重开退出

实现拳皇游戏重开或者退出。
伪代码:

Function ReopenExit
	加载系统选择界面
	选择重开或退出游戏
End Function ReopenExit

7.6、人物role

设计人物基类role的基本属性
通用的人物属性,包括人物位置归属、相对窗口的坐标、血量、站立方向、当前行为状态、头像、血条等。
设计相应虚函数,由各个具体的人物类继承时实现,包括人物资源初始化、站立、右移、左移、跳跃、拳击、腿击、3个技能、防御等。

伪代码:

class role
	role基本属性
		type位置归属P1 orP2
		x,y相对窗口的坐标
		blood血量
		direction站立方向
		action行为状态
		head[2][1]头像
		HP[2][2]血量
	role继承实现属性
		virtual void InitImage() = 0;//资源初始化
		virtual void Stand(role* p2) = 0;//站立
		virtual void RightMove(role* p2) = 0;//右移
		virtual void LeftMove(role* p2) = 0;//左移
		virtual void Jump(role* p2) = 0;//跳跃
		virtual void fistAttack(role* p2) = 0;//拳击
		virtual void legAttack(role* p2) = 0;//腿击
		virtual void skill_I(role* p2) = 0;//技能1
		virtual void skill_II(role* p2) = 0;//技能2
		virtual void skill_III(role* p2) = 0;//技能3
		virtual void Defend(role* p2) = 0;//防御
end class role

7.7、人物操作控制command

实现人物的操作控制。包括血量变化,跳跃、拳击、腿击、技能、移动、防御的限制、判定、行为状态设立等。

伪代码:以P1为例

Function command
GetAsyncKeyState(
)接收键盘输入
//如果站立,则可以跳跃、拳击、腿击、技能1、技能2、技能3、移动、防御

if ‘W’ 进入跳跃状态 then 
begin
        加载跳跃       
	if ‘A’ 
		跳跃空中加载左移
	else if ‘D’ 
		跳跃空中加载右移
        end if
end
end if


//如果非跳跃,则可以拳击、腿击、技能1、技能2、技能3、移动、防御
if ‘J’ 进入拳击状态 then   
begin
        加载拳击
        判定P2是否防御
        确定相应的血量变化
end
end if

//如果非跳跃、拳击,则可以腿击、技能1、技能2、技能3、移动、防御
if ‘K’ 进入腿击状态 then
begin
        加载腿击
	判定P2是否防御
        确定相应的血量变化
end
end if


//如果非跳跃、拳击、腿击,则可以技能1、技能2、技能3、移动、防御
if ‘U’ 进入技能1状态  then     
begin
        加载技能1
	判定P2是否防御
        确定相应的血量变化
end
end if

//如果非跳跃、拳击、腿击、技能1,则可以技能2、技能3、移动、防御
if ‘I’ 进入技能2状态  then    
begin
        加载技能2
	判定P2是否防御
        确定相应的血量变化
end
end if

//如果非跳跃、拳击、腿击、技能1、技能2,则可以技能3、移动、防御
if ‘O’ 进入技能3状态  then     
begin
        加载技能3
	判定P2是否防御
        确定相应的血量变化
end
end if

//如果非跳跃、拳击、腿击、技能1、技能2、技能3,则可以移动、防御
if ‘A’ 进入左移状态 then    
begin
        加载左移
end
end if

if ‘D 进入右移状态 then     
begin
        加载右移
end
end if

//如果非跳跃、拳击、腿击、技能1、技能2、技能3、移动,则可以防御
if ‘S’ 进入防御状态 then     
begin
        加载防御
end
end if

//无输入则重置为站立状态
if 无输入 进入站立状态 then    
begin
        加载站立
end
end if
End Function command
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值