Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
nikitos9305
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 44
#1

Почему тормозит играаа??? - C++

29.07.2011, 18:26. Просмотров 1106. Ответов 16
Метки нет (Все метки)

Добрый день - решил недавно создать игрушку (третяя на моем счету)...
но на этот раз игра не пошаговая - эдакое подобие бомбермена с инвентарем...

Можете пожалуйста подсказать по какой причине игра может тормозить ?
(Возможно проблема в алгоритме - основная часть которого в мейн функции(это цикл)- пожалуйста обратите внимание)
Администрацию сайта просьба не переносить даное сообщение в раздел бета тестирования и suchlike...

PS :
могут возникнуть проблемы с winmm.h ... там нужно в настройках компилятора (и.или проекта- для удобства создайте новый и скопипастите содержимое .cpp дока) создать линк с файлом libwinmm.a

Также приношу просьбы всем у кого глаза начнут выпадать из глазниц - мигание раздражает + код огромен (создавал програму по принципу "снизу- вверх" вообще не советую , ибо дороже обойдеться)...
но прошу помнить что это мой третий игровой проэкт...
0
Вложения
Тип файла: txt map.txt (921 байт, 49 просмотров)
Тип файла: rar Desktop.rar (208.5 Кб, 53 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2011, 18:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему тормозит играаа??? (C++):

Почему возможно задать массив с размером -1 (почему такое вообще компилируется)? - C++
Всем привет. Долгое время не писал на плюсах, решил пройтись по основам, вспомнить. По непонятным для меня причинам этот код...

Почему выводится в виде таблицы и почему не работает сортировка - C++
почему выводится в виде таблицы? почему не работает сортировка? и как туда можно вставить классы комнат? hotel.h #include...

IDE wxDev-C++, при создании кнопки на форме она почему-то становится во весь экран, почему? - C++
То есть ребята не смешно ни разу. Создаю форму, кидаю кнопку, ничего не предвещает плохого. Собираю проект, запускаю- и вот кнопка размером...

Почему не взяли на обучение в CQG, на сайте нашел испытательное задание, сделал и отослал. Не взяли и не объяснили почему. Хочу услышать мнения. - C++
/ Программа получает на вход текстовый файл и расшифровывает его первую строчку получая ключ. // #include "stdafx.h" ...

Тормозит программа - C++
Добрый вечер. В чем может быть загвоздка? Пишу тетрис (консольный), на работе он летает а дома тормозит. Хочу дописать... Железо почти...

Тормозит Borland C++ 3.1 - C++
У меня Windows XP, этот компилятор почему-то тормозит систему..

16
leoned
30 / 30 / 1
Регистрация: 30.06.2011
Сообщений: 467
29.07.2011, 18:54 #2
как мне кажеться тормоз из-за медленной перерисовки попробуйте поднять чистоту.
еще меня пророзило каличество if\else
Да кстати код реально огромен!
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
29.07.2011, 18:58 #3
не перерисовывай всю карту а только перерисовывай движения .

жесть у тебя каждое движение отдельной функцией О_о
уж сделай движение функцией а параметр - направление. а внутри че-то типа функции checkEnemies() .. checkBomb() (не наступил ли на врага. не наступил ли на бомбу) и т.д.

у меня спустя 10 секунд мигания игра остановилась ваще)

ну и мелочь - если карта не загрузилась уж сделай выход из игры. а не продолжение.
0
leoned
30 / 30 / 1
Регистрация: 30.06.2011
Сообщений: 467
29.07.2011, 19:01 #4
А я хотел просто предложить поднять честоту перерисовки до заветных 24 кадров в секунду)
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
29.07.2011, 19:06 #5
leoned, скорей всего не поможет а только мигать будет чаще. к тому же параллельностью там не пахнет - перерисовка прост с каждым шагов делается.
просто перерисовывать всю карту очень не рационально.

ага так и знал - system("cls"); ...
автор - юзай SetConsoleCursorPosition и закрашивай std::cout << ' '; затем с помощью этой же функции двигайся в бок и рисй опять человечка. и усё.
0
leoned
30 / 30 / 1
Регистрация: 30.06.2011
Сообщений: 467
29.07.2011, 19:07 #6
Цитата Сообщение от OstapBender Посмотреть сообщение
просто перерисовывать всю карту очень не рационально.
ну в принцепи так и есть это я чёт тупанул
0
nikitos9305
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 44
30.07.2011, 22:49  [ТС] #7
автор - юзай SetConsoleCursorPosition и закрашивай std::cout << ' '; затем с помощью этой же функции двигайся в бок и рисй опять человечка. и усё.
а можешь плз поподробнее написать - в часности что значит закрашивать std::cout<< ?
Что такое стд я знаю...

а в общем то что тормозит програму- из предложений я понял пока только частое перерисовывание карты...

+ как паралельность сделать ?
0
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
30.07.2011, 22:57 #8
Цитата Сообщение от nikitos9305 Посмотреть сообщение
а можешь плз поподробнее написать - в часности что значит закрашивать std::cout<< ?
могу. эт значит что надо закрасить место на экране, где был моб пустым символом ' '.
Цитата Сообщение от nikitos9305 Посмотреть сообщение
+ как паралельность сделать ?
забей на это. тут это будет слишком круто.
0
nikitos9305
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 44
31.07.2011, 00:26  [ТС] #9
так у меня так оно и происходит - идея такова - есть каркас- цыфровое поле которое находиться под картой - при выводе цыфры преобразуються в символы акси...

про паралельность:
тобишь сам стиль написания кода делает паралельность труднодоступной ?

Ну а все же каков алгоритм для паралельности - может какие то специальные функции из win_api использовать нужно ?
0
leoned
30 / 30 / 1
Регистрация: 30.06.2011
Сообщений: 467
31.07.2011, 12:29 #10
Цитата Сообщение от nikitos9305 Посмотреть сообщение
win_api
зачем?это ж конслоль?
0
Евгений М.
1036 / 977 / 54
Регистрация: 28.02.2010
Сообщений: 2,829
Завершенные тесты: 2
31.07.2011, 19:15 #11
Цитата Сообщение от leoned Посмотреть сообщение
зачем?
Цитата
Цитата Сообщение от nikitos9305 Посмотреть сообщение
Ну а все же каков алгоритм для паралельности - может какие то специальные функции из win_api использовать нужно ?
0
nikitos9305
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 44
31.07.2011, 22:40  [ТС] #12
Ребята, а с ускорением то что делать ?
0
leoned
30 / 30 / 1
Регистрация: 30.06.2011
Сообщений: 467
01.08.2011, 11:21 #13
Цитата Сообщение от nikitos9305 Посмотреть сообщение
ускорением
Ускорением чего?врагов?
0
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
01.08.2011, 15:04 #14
Цитата Сообщение от nikitos9305 Посмотреть сообщение
(третяя на моем счету)...
предыдущие посмотреть можно?
0
leoned
30 / 30 / 1
Регистрация: 30.06.2011
Сообщений: 467
01.08.2011, 15:33 #15
Цитата Сообщение от Mayonez Посмотреть сообщение
предыдущие посмотреть можно?
да кстати очень интересно было-бы взглянуть
0
01.08.2011, 15:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2011, 15:33
Привет! Вот еще темы с ответами:

Почему MS-DOS не любит кириллицу ? (Или почему она не любит меня ?) - C++
Здравствуйте Почему MS-DOS не любит кириллицу ? У меня есть несколько консольных проектор различной сложности. Почти везде...

Почему тормозит комп? - Процессоры
Кто нибуть может объяснить почему ноут который раньше на xp отлично работал во многих программах, теперь же даже на чистой винде(xp) с...

Почему тормозит hdd - Жесткие диски
Как узнать в чем причина низкой скорости во время проверки ноутбука антивирусом mbam? Диспетчер задач показывает что загрузка диска около...

Почему тормозит BitArray - C#
Вопрос и в том, почему может тормозить BitArray, и в том, как же это лучше исправить. Прилагаю анализ временных затрат и соответствующий...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru