使用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数据或数组等分组和汇总。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
