2013-10-15 18 views
0

我有一段時間一直在工作的java遊戲,現在我想重新調整我的調試系統。如何在java遊戲中創建調試編碼系統?

在這一刻你按Tilde鍵,然後鍵入一系列命令: 治療,彈藥等我後來爲殭屍的敵人添加了一個spawn命令。 該命令如下。 〜spawn.zombie.100(X-座標)0.100(Y-座標)。 將以下代碼運行,將命令拆分爲用於產卵的參數。

 public void cheat(String code) { 
    String[] tokens = code.substring(1).toLowerCase().split("\\."); 
    switch (tokens[0]) { 
    case "spawn": 
     switch (tokens[1]) { 
     case "zombie": 
      game.cubes.add(new EnemyZombie(game, Integer 
        .parseInt(tokens[2]), Integer.parseInt(tokens[2]))); 
      break; 
     case "health": 
      game.cubes.add(new PowerUpHealth(game, Integer 
        .parseInt(tokens[2]), Integer.parseInt(tokens[2]))); 
      break; 
     } 
     break; 
    default: 
     break; 
    } 

    game.start(); 
} 

我該如何實現類似於Java的語法?我想能夠鍵入 zombie.spawn()。setX(100).setY(100).setHealth(1) 並且通過這些參數。

+0

只需使用Java。然後使用現有的工具。看到像[BeanShell](http://www.beanshell.org/intro.html)這樣的可以「直接運行Java的小片段」的東西。或者嵌入任何其他數量的具有評估支持和「類似語法」(例如Groovey或Scala)的現有運行時。或者創建一個詞法分析器/解析器,並在支持「Builder模式」的類型之間使用反射。後一個建議不是*我會​​做什麼,因爲它涉及更多的工作。 – user2864740

回答

0

您可以在運行時使用反射調用簡單的方法。它看起來像這樣:

this.getClass().getDeclaredMethod("myMethod").invoke(this); 

你當然也可以用參數調用方法。但是,您需要爲此編寫一些解析器,還需要確保按照正確的順序調用方法。要實現系統,這將能夠執行你上面寫的命令,這將需要大約30分鐘。

0

根據您的描述,這可能需要大量的代碼來實現。但是,如果您正在尋找一種方法將方法調用鏈接在一起,那麼您可能需要查看構建器模式。查看這個帖子出來:

When would you use the Builder Pattern?

+0

與鏈接方法類似,但我希望在程序運行時分割呈現的字符串。 – piechesse