2013-04-22 40 views
0

基本上,作爲一個團隊的一員,我必須爲我的大學課程創建一個類似pacman的遊戲,只是殭屍而不是鬼。 迄今爲止我們已經構建了所有的遊戲,並且它看起來非常好。我們目前的問題是,我們必須保存一個遊戲(使用用戶名和分數),使用正確的用戶名和分數將遊戲加載到它保存的位置,最後能夠提供重放選項,用戶可以看到他們之前所做的所有動作(以及殭屍所做的動作)。殭屍將始終做出與用戶追求用戶相同的動作。保存,加載和重放遊戲。 C++

我的問題是什麼是做保存,加載和重新加載選項的最佳方式?我們不能使用矢量,堆棧或隊列。我們只能真正使用字符串,數組和其他基本變量。
我們正在考慮首先將所有內容添加到字符串末尾,然後從字符串中彈出最後一個值。然後,我們可以延遲每一秒,用戶將能夠看到他/她的動作。

至於儲蓄我們不確定,還有漏洞(0符號)和藥丸(*符號)要考慮。所以角色,殭屍,藥丸和洞的位置將需要保存。角色可以從任意位置開始,幾乎所有其他位置都放在後面。

我們進行加載的方式取決於您建議我們進行保存的方式。

有沒有人有任何建議我們應該如何保存,加載和重放?

謝謝

+0

爲什麼你不能使用像矢量等集合...? – cppguy 2013-04-22 21:26:48

+0

@cppguy只是講師把任務放在了額外的界限上。讓我們考慮像數組,文件,字符串等更基本的東西。 – Swapnull 2013-04-22 21:32:31

+0

您應該考慮使用XML。有些庫可以幫助管理它。 – 2013-04-22 21:35:44

回答

0

你需要閱讀一些序列化。我在這裏寫了一些文章,但是這對你們來說太過分了:http://www.randygaul.net/2013/01/05/c-reflection-part-5-automated-serialization/

你可以使用一些非常簡單的序列化來寫出每個殭屍到文件中的移動。然後當你想重新加載這些信息時,你可以反序列化文件中的信息。每一個動作都可能以某種形式存儲在鏈表中,所以你必須想出一種在反序列化時重新創建這種列表的方法。

您的問題非常廣泛,所以我的答案也必須相當寬泛。真的,這取決於你研究一個解決方案並實施它。

1

我能想到的最簡單的方法是保存用戶輸入。

這樣,您可以通過向遊戲引擎發送輸入(這可能需要根據遊戲引擎的設計進行大量重構)來輕鬆地重放遊戲。爲了加速載入,您還可以在保存時(通過序列化)保存遊戲狀態。

這就是想法,怎麼做......你需要一個不斷擴大的數組來記錄用戶輸入,所以我們使用一個鏈表。

struct Node { 
    T data; 
    Node* next_node; 
}; 
//Google for the rest of the code, it is a reeeaaallly 
// basic/fundamental data structure. 

數據將是用戶輸入和它們發生的時間。 要保存數據,您只需遍歷鏈表並將其附加到std :: ostream &(爲通用,std :: ofstream &具體)。

您可以在用戶輸入之前或之後(或者甚至在另一個文件中,這對高分確實有意義)添加一些其他有用的信息(例如遊戲狀態和高分)。