嘿所以我正在製作一個簡單的文字遊戲,使用pdCurses庫和其他一些小東西有點像垂直滾動,你可以避免隨機生成的牆壁...... Theres two walls on左邊和右邊是由'X'字符和空白的黑色空間組成的,你可以在其中移動並避免'X的角色是'8',並且每當一個新線路被迫繼續前進或被X接觸時的隨機生成的「地圖」顯示出來(對於性能測試,我做了一條儘可能快的新線)。性能超時問題
但是,當「地圖」(一個字符串矢量)變得越來越大時,我遇到了一些性能問題。我不明白這個問題,但是因爲我沒有在任何時候使用它,我只是把它的一部分顯示出來(通常是56行)。
我會告訴你我有什麼,希望有人會幫助或建議一個更好的方式來完成我的遊戲。
這裏的冷凝,重要的代碼: 下面是正在像0.25-0.75秒功能(new_map也是「屏幕」類的載體構件):
void Insert(const Map& map, int y1, int y2) {for (int mc = y1, nm= 0; mc< map.Contents().size() && mc< y2; mc++, nm++)
new_map[nm] = map.Contents(mc);};
這裏的地圖類內容的功能:
string Contents(int Y) {return contents[Y];};
char Contents(int Y, int X) {return contents[Y][X];};
vector <string> Save() {return save;};
終於的main()我已經設置成屏幕更新儘可能快......這是不轉出如此快噢,L1是我的「地圖」中的一個...... 生成新線的地圖增加了作爲這樣永遠不會結束:
double refreshes= 0;
for (bool quit = false; quit != true;)
{ double newTime= myStopwatch.ElapsedTime()- refreshes;
theScreen.Insert(L1, 0+refreshes, nrows+refreshes);
refreshes++;
if(L1.Contents().size()<= nrows+refreshes+2)
L1.generate();}
感謝任何幫助或提示!我知道這很糟糕,但我剛開始編程2個月前哈哈! =)詢問你是否需要更多信息。
我是否也可以通過將所有內容都設置爲'const&'refrerence來加快速度?那意味着沒有副本會被製作正確嗎? – Griffin 2011-05-22 01:46:12
@Griffin可能但請記住,您不能重置參考,因此您可能需要一個指針。爲什麼你需要首先複製? – 2011-05-22 02:05:21