Эй, я делаю простую текстовую игру, используя библиотеку pdCurses и некоторые другие мелочи, вроде вертикального скроллера, в котором вы избегаете случайно сгенерированных стен ....
Есть две стены слева и справа, сделанные из символов «X», и пустое черное пространство, в котором вы можете перемещаться и избегать «X», ваш персонаж - «8», и вы вынуждены двигаться вперед или касаться друг друга X время, когда обнаруживается новая строка случайно сгенерированной «карты» (для тестов производительности я сделал новую строку, показанную как можно быстрее).
Однако у меня есть некоторые проблемы с производительностью, так как «карта» (вектор строк) становится все больше и больше. Я не понимаю проблемы, однако, поскольку я не использую все это в любое время, я только вытаскиваю ее части для отображения (обычно 56 строк).
Я покажу вам, что у меня есть, и, надеюсь, кто-то поможет или предложит лучший способ добиться успеха в моей игре.
Вот сокращенный, важный код:
Вот функция, которая занимает примерно 0,25,75 секунды (new_map также является векторным членом класса "Screen"):
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);};
Вот функции содержания классов Map:
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 месяца назад, ха-ха! =) спросите, нужна ли вам дополнительная информация.