![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#131 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
![]()
Андрей 93, наверное, вы создавая уровень реагируете только на значения данных больше нуля, полагая, что выделенный участок памяти сам очищается? ...это не так. Сколько работал с памятью, редко GetMem возвращал массив содержащий исключительно нули, ...задача команды стоит только в том, чтобы искать неиспользуемые участки, указывать нужную длину и возвращать для использования, ...очисткой вам нужно заниматься самостоятельно.
Например, у меня тип PChar, использую его везде, поскольку это массив указателей, с ними проще работать в памяти простой арифметикой. Можно заполнить такой массив любым одинаковым значением вот так: Код:
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Последний раз редактировалось Beermonza; 04.05.2010 в 16:07. |
![]() |
![]() |
![]() |
#132 |
Люблю жизнь
Форумчанин
Регистрация: 01.12.2009
Сообщений: 193
|
![]()
Хочу в игре сделать секундомер, чтобы проходить миссии на медали за время. Мой вариант: добавить таймер с интервалом 1с в основной модуль (где инициализируется OMEGA) и увеличивать значение переменной (например t), а потом использовать это значение для подсчета времени. Мне этот способ не очень нравится - как-то неоптимально. Есть другой способ?
Не стыдно не уметь, стыдно не учиться.
|
![]() |
![]() |
![]() |
#134 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
![]()
Андрей 93, ну у вас же есть основной таймер? Какой там у него интервал? Ну, к примеру, 40мс. Так просто заводим еще одну переменную и при каждом срабатывании основного таймера прибавляем к этой переменной 40. Когда надо запустить отсчет - ставим ее значение на 0, прописываем где-нибудь в логическую переменную, что отсчет пошел и считаем. Когда надо - делим полученное на 1000, получаем время в секундах.
Да, только для этого пришлось добавить еще две переменные (счетчик и индикатор: отсчет запущен/приостановлен), и для каждого нового добавления придется вводить еще и еще - но это лучше, чем куча не слишком хорошо синхронизированных таймеров, множащихся как кролики весной. К тому же отдельные логические части можно вынести в отдельные функции и уменьшить громоздкость кода с небольшим увеличением его объема. VintProg, оно, конечно, такие есть, но лучший учебник по программированию игр - учебник по языку программирования плюс немного логики и знакомство с общими технологиями, например, на этом же форуме. Впрочем, могу подсказать как минимум одну книжку - "Программирование игр для Windows. Советы профессионала".
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же Последний раз редактировалось Гром; 14.05.2010 в 13:51. |
![]() |
![]() |
![]() |
#135 | |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#136 |
Люблю жизнь
Форумчанин
Регистрация: 01.12.2009
Сообщений: 193
|
![]()
Я не знаю, как данные о времени от ОС брать. Это связано с WinAPI?
VintProg, лично я не читал учебники, сначала изучил Pascal, затем познакомился с VCL Delphi. Чтобы уйти от базового уровня начал создавать игру. Почти всему я научился в этой теме, за что спасибо тем, кто мне помогал (отдельная благодарность Вадиму). Некоторую информацию о процедурах и функциях искал в google.
Не стыдно не уметь, стыдно не учиться.
|
![]() |
![]() |
![]() |
#137 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
![]()
Для получения времени можно использовать функции GetTickCount, timeGetTime (вроде бы практически одно и то же), видел в интернете что-то про QueryPerfomanceCounter.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
![]() |
![]() |
![]() |
#139 | |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
![]()
Впринципе можно считать время по итерациям таймера как предлагали (1 тик 40мс), но это может быть очень не точным при сильной нагрузке. Поэтому лучше получать время от винды, но тут уж я не знаю как.Посмотри функции которые гром предложил.
Цитата:
|
|
![]() |
![]() |
![]() |
#140 |
Люблю жизнь
Форумчанин
Регистрация: 01.12.2009
Сообщений: 193
|
![]()
А мне кажется, что при сильной нагрузке больше подходит 1ый вариант, ведь когда игра тормозит, время тоже должно тормозить. Если время будет идти независимо от игры, то оно может пойти быстрее, что негативно скажется на результате. Но я не думаю, что моё творение потребует много ресурсов.
Не стыдно не уметь, стыдно не учиться.
Последний раз редактировалось Андрей 93; 17.05.2010 в 06:15. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Физика в 2D играх | Вадим Буренков | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 32 | 02.11.2010 22:00 |
Искуственый интелект в играх | VintProg | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 26 | 01.08.2009 23:09 |
Сюжет в 2D играх | ZotaC | Свободное общение | 8 | 05.07.2009 15:42 |
Физика программы. | Манжосов Денис :) | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 1 | 09.05.2008 18:14 |
Анимация в играх | frai | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 4 | 25.11.2007 14:28 |