2009-10-01 121 views
1

我想写一个简单的Java游戏。 我有一个NPC类,带有一个函数Dialog,它返回npc会说什么,这取决于各种条件。用Java编写脚本(使用PHP)?

我在考虑卸载决定每个npc会对脚本语言说些什么的逻辑,这样可以很容易地更新它。这样,我可以使用类似

npc Mayor = new npc(“mayor.php”);

或者这个效果。所以我搜索了一下,发现了很多技术(PHP/Java Bridge,Querticus,Java Servlet SAPI等),但只是弄糊了每个技术以及它是否提供了我正在寻找的功能。

我并不是真的只限于PHP,但那只是我最习惯的一个,因为我有标志条件决定了存储在本地mysql数据库中的npc对话框。我宁愿不在线提供这些脚本,因此在这种情况下使用不同的脚本语言会更有用?

我很乐意就如何实施这一点提出任何意见或建议。谢谢!

+0

PHP是一种Web服务器脚本语言。我不知道它是否用在其他地方。 – 2009-10-01 00:07:24

+2

我认为你应该对面向对象编程和Java编程语言做更多的研究 - 特别是类,继承和设计模式。这是解决您的问题的错误方法。 – 2009-10-01 00:09:43

+0

这对于游戏开发来说并不一定是正确的,主要的开发通常是用面向对象的语言来完成的,例如C++和附加组件等,这些都是在诸如Lua这样的脚本语言中完成的。 – rajax 2009-10-01 00:30:37

回答

2

游戏中的脚本通常使用Lua完成。但是,由于您使用的是Java,因此我可能会推荐一种基于Java的脚本语言,如Groovy,JRuby或Jython。

在Java 6中,您现在可以直接从Java调用脚本语言。例如,使用javascript:

import javax.script.*; 
public class EvalScript { 
    public static void main(String[] args) throws Exception { 
     // create a script engine manager 
     ScriptEngineManager factory = new ScriptEngineManager(); 
     // create a JavaScript engine 
     ScriptEngine engine = factory.getEngineByName("JavaScript"); 
     // evaluate JavaScript code from String 
     engine.eval("print('Hello, World')"); 
    } 
} 

有一个scripting project hosted by Sun在其中各种脚本语言(包括Python和AWK)已经被集成到新的Java 6的脚本引擎。 PHP家饭店没有这个名单上,虽然有第三方实现此处

http://php-java-bridge.sourceforge.net/

2

如果你熟悉Python,看看Jython,这是用Java编写的Python解释器并允许您从Java调用Python代码,反之亦然。

1

有几种非Java语言可以在“Java”VM上运行,如Groovy,Scala,Jython,Clojure等。

其中之一是Quercus,这是VM的一个PHP端口。有了这个,你应该可以从PHP调用Java,反之亦然。