使用XWorker编写战斗模拟器

  还是XWorker的介绍贴,XWorker是免费开源项目,下面是使用XWorker的数据对象技术开发的我们游戏项目的战斗模拟器,希望让大家了解XWorker中开发的方式。另外不建议目前用XWorker开发商业应用,后果自负,因为XWorker还不成熟,所以才希望有人能够加入XWorker的开发。

 

数据对象的使用说明:

    主要是用于编写界面和数据统计,数据对象技术类似于信息化系统那种格式化的CUDI操作,只不过在XWorker数据对象主要用于一般编辑界面,即不限于数据库的操作,主要是对一般的表单、表格的等处理,如示例中的战斗数据的展示和统计等。

 

战斗模拟器的界面:

 

战斗模拟器的详细说明

1. 玩家和怪物界面

XWorker中的代码是:





以上代码生成了如下界面:

生成以上表单的依据是tools:dataobjects.PlayerThingDataObject和tools:dataobjects.Monster,如Monster的定义是:


 

2. 设置和读取表单数据

   表单生成后,填充表单数据和获取表单数据的方法。

   a. 设置表单的数据

   以下是按钮的代码:


 

对应的界面是:

 

我们使用选择怪物按钮来解释如何选择怪物并填充怪物表单,选择怪物的按钮的事件处理代码是:



 分解讲解:

 打开选择怪物的窗口tools:battle.MonsterSelector:/@shell。

 如果选择的怪物。

 把怪物数据填充到怪物表单。

 把怪物数据设置到全局变量中,以备后用。

 

b. 获取表单数据的代码

def mvalues = monsterForm.doAction("getValues", actionContext);

 以上是groovy的脚本代码,获取怪物表单中的编辑的数据。

 

3. 统计数据处理


 以上是模拟战斗后的统计结果,实际上战斗过程是由游戏的代码完成的,XWorker负责把每次的战斗结果汇总并显示出来,在这里介绍如何使用数据对象的统计功能。

统计的代码如下:

 

//计算玩家的统计信息
def attackStaticDObj = world.getThing("tools:battle.AttackInfoStatic");
//玩家统计
def playerAttackStatic = attackStaticDObj.doAction("query", actionContext, ["attackDetails": playerAttackDetails]).get(0);
//怪物统计
def monsterAttackStatic = attackStaticDObj.doAction("query", actionContext, ["attackDetails": monsterAttackDetails]).get(0);    

 playerAttackDetails和monsterAttackDetails是一次战斗的详细信息,是由游戏代码算出来的,attackStaticDObj是统计模块,做统计,

  attackStaticDObj.doAction("query", actionContext, ["attackDetails": playerAttackDetails]).get(0);是执行统计并算出结果。

其中统计的定义是tools:battle.AttackInfoStatic,它的代码如下:


 StatisticsQueryDataObject是一个分组和汇总模块,可以对List数据或数组等分组和汇总。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部