gpt4 book ai didi

java - 带有 LuaJava 的 EnumMap(尝试调用 nil 值)

转载 作者:行者123 更新时间:2023-11-29 08:45:48 26 4
gpt4 key购买 nike

正如标题所说,我对 LuaJava 和 EnumMap 有疑问。我正在尝试做一个角色扮演游戏库,所以我们有一个具有一些属性的角色和它们的列表。在下面的代码中,我将只报告重要的事情。

我有一个名为 ConcreteAttribute 的类,它扩展了 AbstractAttribute,它有一个带有 String 和两个 int 的构造函数。

public abstract class AbstractAttribute {

protected String name;
protected int baseValue;
protected double baseMolt;

public AbstractAttribute(String name, int valoreBase, double moltBase){
this.name = name;
this.baseValue = valoreBase;
this.baseMolt = moltBase;
}

/*Getters and Setters*/

}

然后我有一个名为 StatType 的枚举,代表您在 RPG 游戏中的统计数据:

public enum StatType {
HP, MP, Attack, Defense;
}

我还有一个名为 PlayableCharacter 的类,它具有(我将只报告重要的事情):

public abstract class PlayableCharacter extends Character{

protected EnumMap<StatType, ConcreteAttribute> statistiche;

//Constructor

public EnumMap<StatType, ConcreteAttribute> getStatistiche(){
return statistiche;
}

还有一个来自 Map 的“put”方法。

要创建一个新角色,我目前正在这样做(“Eroe”扩展了 PlayableCharacter):

    public static void main(String[] args) {

PlayableCharacter pers = new Eroe("Eroe 1");
ConcreteAttribute atk = new ConcreteAttribute("Attacco", 20, 0);
pers.getStatistiche().put(StatType.Attacco_Fisico, atk);

}

并且工作正常,但我认为当您有很多 ConcreteAttribute 和很多 Character 时,这不是最佳解决方案。所以我想用 Lua 来创建角色的“具体”状态,这样(小例子):

-- Eroe 1.lua
function create(eroe)
eroe:setName("Eroe 1")
attributes = luajava.bindClass("personaggi.attributi.StatType")
attacco = luajava.newInstance("personaggi.attributi.ConcreteAttribute", "Attacco", 20, 0)
eroe:getStatistiche():put(attributes.Attacco_Fisico, attacco)
end

但我收到此错误:PANIC:调用 Lua API 时出现不 protected 错误(尝试调用 nil 值)。问题出在最后一行,但我对 Lua 真的很陌生,我什至不知道 Lua 是否可以处理 EnumMap。

有什么解决办法吗?

谢谢大家,抱歉我的英语不好^^

编辑:我已经编辑了代码,我发现了一个错误

最佳答案

枚举常量是其枚举类的公共(public)成员,但您可以像使用 : 的方法一样访问它。

因此,您需要使用 attributes.Attacco_Fisico 而不是 attributes:Attacco_Fisico

关于java - 带有 LuaJava 的 EnumMap(尝试调用 nil 值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25488239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com