如果您听说过 Nethack,您就会熟悉诸如多态之类的游戏功能。
在我正在修改的 Java 游戏中,小怪(英雄、怪物)被描述为 Java 类,它们都扩展了非常基础的 Char.java 类。我正在尝试向该基类添加一个新字段:一个公共(public) current_form 字段,该字段应该是指向代表您或怪物当前形态的类的链接。
基 Char.java 类将具有 attack()、move() 以及其他一些将触发 current_form 的方法分别为.attack()、current_form.move(),其中current_form被替换为类名。
因此,如果我有 Hero 类(扩展 Char):
Hero h = new Hero();
我攻击:
h.attack();
如果我的表单是 Rat.class
,它将触发一个 do_attack()
方法作为我当前的表单(读取:从名为我当前表单的类),它将分别触发Rat.do_attack()
。
你是如何实现这种行为的?
最佳答案
这可能是类似的事情
public class Hero extends Char {
Char polymorphedTo;
public void attack() {
if(polymorphedTo != null)
polymorphedTo.attack();
else
normalAttackCode();
}
}
这允许一种简单的方法将任何合适的操作重定向到您要变形的表单的代码。
关于Java:变量作为类的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41173333/