我目前正在用Java编写一个随着时间的推移而变得越来越大的游戏。 所以现在我正处于更加动态的代码实现变得非常方便的地步。 我决定看看Jython,并且已经使用了一些简单的脚本。 (顺便说一句,如果它以某种方式重要的话,我正在使用最新的独立Jython)。
现在我的问题是:我可以在上述Java项目中执行的Jython脚本中执行Java项目中的方法吗?
以下是伪代码的示例,以便更好地理解我想要问的内容:
假设我的脚本如下所示:
def main():
killPlayer()
main()
包含方法“killPlayer()”的Java类:
public void killPlayer() {
player.setAlive(false);
}
Jython脚本执行如下:
PythonInterpreter pyInterp = new PythonInterpreter();
pyInterp("script.py");
有什么可能吗?
提前致谢并抱歉我的英语不好^^
答案 0 :(得分:1)
您可以在Jython中导入Java类,如下所示:
from javax.swing import JFrame
f = JFrame('Hello, World!', defaultCloseOperation=JFrame.EXIT_ON_CLOSE, size=(300, 300), locationRelativeTo=None)
f.setVisible(True)
(source)
所以我的建议是将Java代码用作库并在Python中实现“设置所有内容”。这样,您就不需要找到从脚本中查找Java对象实例的方法。
如果你需要查找实例,我建议在某处创建一个静态全局变量,它允许你访问暴露重要游戏实例的类。在Java代码中,您可以使用Map
中的名称为Jython脚本注册实例。