2009-10-01 151 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,反之亦然。