1
所以花了一些時間,並決定在我上學的時候做一個小型遊戲作爲副項目。我需要什麼來創建CLI遊戲?任何有用的資源?
我想製作一個命令行遊戲,也許是某種類型的RPG或泥巴。 我的問題是,我需要什麼使其成爲現實?
我看過ncurses,並且一直在閱讀一些文檔,這是一個必要的步驟,還是有一些更容易?與常規命令行應用程序相比,我可能需要其他任何特定技術嗎?我可能會讓它成爲學校嗎?
謝謝。
所以花了一些時間,並決定在我上學的時候做一個小型遊戲作爲副項目。我需要什麼來創建CLI遊戲?任何有用的資源?
我想製作一個命令行遊戲,也許是某種類型的RPG或泥巴。 我的問題是,我需要什麼使其成爲現實?
我看過ncurses,並且一直在閱讀一些文檔,這是一個必要的步驟,還是有一些更容易?與常規命令行應用程序相比,我可能需要其他任何特定技術嗎?我可能會讓它成爲學校嗎?
謝謝。
你需要兩樣東西:
這是你需要一個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!
}
}
它是不是非常困難測試沒有接口的引擎?而且界面非常廣泛。什麼技術可以用於界面? – Blackbinary 2011-02-25 21:38:19
@黑色實際上,不可能在沒有界面的情況下進行測試。是的,界面非常廣泛。你可以使用命令行,你可以使用GUI,你可以使用編程式調用(這是自動化測試所必需的)。想象你的遊戲引擎就像一個帶有按鈕的巨大框。界面只是可以推動按鈕的東西。您可以基於命令行或gui或程序進行推送。你可以基於隨機數推動,沒關係。 – corsiKa 2011-02-25 21:40:12
如果你沒有采取任何其他措施,**讓你的引擎,然後你的界面**。您無需一次製作整個引擎。實現一些功能(登錄,移動),然後使您的界面進行測試。然後添加另一個功能到引擎。然後調整你的界面。沖洗,重複。 – corsiKa 2011-02-25 21:41:17