我目前正在使用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");
有什么可能吗?
在此先感谢您,我的英语不好^^
最佳答案
您可以像这样在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代码中为Jython脚本在
Map
中用名称注册实例。关于java - Jython中来自Java项目的访问方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19229106/