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

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

游戏王有几千张卡,效果很多。而且效果与:玩家生命、魔法、陷阱、场地、手牌、墓地、除外区、地形、卡组……等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天后将决定。

   

 

你可能感兴趣的:(java,游戏,String,脚本,Class,HP)