2011-02-25 36 views
1

所以花了一些時間,並決定在我上學的時候做一個小型遊戲作爲副項目。我需要什麼來創建CLI遊戲?任何有用的資源?

我想製作一個命令行遊戲,也許是某種類型的RPG或泥巴。 我的問題是,我需要什麼使其成爲現實?

我看過ncurses,並且一直在閱讀一些文檔,這是一個必要的步驟,還是有一些更容易?與常規命令行應用程序相比,我可能需要其他任何特定技術嗎?我可能會讓它成爲學校嗎?

謝謝。

回答

1

你需要兩樣東西:

  1. 遊戲引擎
  2. 接口

這是你需要一個GUI遊戲完全一樣的事情。唯一的區別是你的輸入和輸出機制。所以,編寫你的遊戲引擎,確保它是適應性的,然後你的命令行界面來控制引擎。

=========編輯的問候評論:=========

任何接口的目標是繪製用戶請求引擎請求。不知道你在說什麼語言,具體細節會有點......非常特殊。

我可以告訴你我將如何用Java來做到這一點。

我將創建一個UserRequest類具有以下基本特徵:

抽象類UserRequest {

protected GameEngine engine; 
protected String command; 
protected int numArgs; 

public UserRequest(GameEngine engine) { 
    this.engine = engine; 
    this.command= command; 
    this.numArgs= numArgs; 
} 

public abstract void callback(User user, String[] args); 

protected void checkArgs(String[] args) { 
    if(args == null || args.length != numArgs) { 
     throw new IllegalArgumentException("your args suck..."); 
    } 
    if(!args[0].equals(command)) throw new IllegalArgumentException("commands don't match"); 
} 

}

在我的界面,我會被填充像這樣的Map<String,UserRequest>

Map<String,UserRequest> behaviors = new HashMap<String,UserRequest>(); 
behaviors.add("MOVE",new UserRequest(engine,"MOVE",2) { 
    // define the engine callback 
    public void callback(User user, String[] args) { 
     // assume args[0] is command 
     int x = Integer.parseInt(args[1]); 
     int y = Integer.parseInt(args[2]); 
     engine.move(user,x,y); 
    } 
} 

public void repl() { 
    while(true) { 
     // assume you have a form of input - scanner perhaps? 
     String inputline = acquireNextInputLine(); 
     String[] tokens = inputline.split("\\s"); // default split on white space 
     UserRequest behavior = behavior.get(tokens[0]); 
     if(tokens == null) displayError(inputLine); 
     try { behavior.callback(currentUser,tokens); } 
     catch(Exception e) displayError(e); // assume you have better error reporting than this! 
    } 
} 
+0

它是不是非常困難測試沒有接口的引擎?而且界面非常廣泛。什麼技術可以用於界面? – Blackbinary 2011-02-25 21:38:19

+0

@黑色實際上,不可能在沒有界面的情況下進行測試。是的,界面非常廣泛。你可以使用命令行,你可以使用GUI,你可以使用編程式調用(這是自動化測試所必需的)。想象你的遊戲引擎就像一個帶有按鈕的巨大框。界面只是可以推動按鈕的東西。您可以基於命令行或gui或程序進行推送。你可以基於隨機數推動,沒關係。 – corsiKa 2011-02-25 21:40:12

+1

如果你沒有采取任何其他措施,**讓你的引擎,然後你的界面**。您無需一次製作整個引擎。實現一些功能(登錄,移動),然後使您的界面進行測試。然後添加另一個功能到引擎。然後調整你的界面。沖洗,重複。 – corsiKa 2011-02-25 21:41:17

相關問題