java版游戏王_Java2D+3D游戏王(Yo-Gi-Oh!)开发日志1

博主探讨了Java版游戏王的开发,面临复杂卡片效果的挑战。提出了两种设想:1) 制作卡片编辑器生成对应Java类;2) 使用一个通用效果怪兽类,动态加载效果触发时机和效果。通过Rhino将外部文件的字符串转换为Java中的布尔值和操作。目前还在决定最终架构。
摘要由CSDN通过智能技术生成

这几天,看了一下游戏王的效果怪兽卡片。

游戏王有几千张卡,效果很多。而且效果与:玩家生命、魔法、陷阱、场地、手牌、墓地、除外区、地形、卡组……等N个因素相关联。而有些效果甚至是在两个不同因素之间进行,如从墓地到手牌、有攻击变防守、由里侧变表侧……

这么复杂的卡片关系,如果人为手动来编写这些卡(假设每张卡一个类)不太可行。因此我有了2个设想:

1、制作一个卡片编辑器,通过它来编辑卡片,这个编辑器可以通过勾选效果怪兽的效果触发时机和效果(将游戏王里面每张卡的效果都分解成一个原子效果,然后进行组合,形成实际的效果),然后生成对应的类。这样或许是简单点的做法。这样如果我编辑了100张卡,那么就自动生成100个卡对应的java文件(你可以理解为有100个类)。

2、只有一个效果怪兽卡的类,然后里面的效果触发时机和效果是动态的。每张卡读取该怪兽的效果触发时机和效果(这两个都是保存在外部文件,因此是字符串),那么重点在于怎么将字符串转化为布尔值和操作。比如:

假设有一张卡,当玩家生命小于1000时,攻击力上升1000,外部文件保存了如下字符串:

触发时机:"HP < 1000"

触发效果:"this.attack += 1000"

这个问题可以使用脚本很容易地解决。通过Rhino可以调用Java中的类。因此,我可以类似地定义效果怪兽的卡为:

/*

* EffectiveMonster.java

*/

public class EffectiveMonster{

//各种攻击、等级等属性

private String con;//触发时机

private String do; //触发效果

public void activity(){

//这里的UScriptEngine为由Rhino拓展的类,用于解释JS脚本

if(UScriptEngine.exec(con)){

UScriptEngine.exec(do);

}

}

}

具体架构过2天后将决定。

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2010-11-24 08:00

浏览 494

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值