![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 28.12.2011
Сообщений: 124
|
![]()
Добрый день!
Проблема вот в чём - есть общий цикл программы, который описан в Код:
Если я прописываю в процедуре изменения положения противника функции наподобии Sleep(1000); - на это время задерживается прорисовка всего, тоесть и когда игрок (тоесть я например) двигаю фигуры - они у меня двигаются с задержкой. Как сделать, чтобы только действие противника отображалось с задержкой? Описала я наверное неочень понятно свою проблему, но не знаю как лучше это сделать..
"Думай не о задаче, а о решении" (с)
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 14.10.2011
Сообщений: 267
|
![]()
не вполне четко представляю Вашу задачу..., но можно попробовать запускать прорисовку через таймер. Допустим есть переменная mDelay, дискретность таймера 100 мс; в каждом цикле анализируется значение mDelay: если не ноль, тогда декремент - и выполнение прорисовки, если обнулилось. При своем ходе устанавливаете mDelay в 1, а при ходе противника, допустим, 4.
|
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 28.12.2011
Сообщений: 124
|
![]()
Пока реализовать не очень выходит - всё равно весь вывод приостанавливается..
Может я не до конца разобралась, что вы имели ввиду, вот тут: Цитата:
"Думай не о задаче, а о решении" (с)
|
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 14.10.2011
Сообщений: 267
|
![]()
- ну да; вот так, например:
Код:
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 28.12.2011
Сообщений: 124
|
![]()
Не, так не выходит - начинается мигание, если я перерисовываю в таймере, а не в IdleLoop и плюс всё равно торможение как движения фигур противника, так и моих фигур.
Не хочется весь проект выкладывать, но попробую описать общую схему: 1.)Есть процедура IdleLoop, которая в Create зациклена: Application->OnIdle = IdleLoop; 2.)IdleLoop выглядит, как я указывала выше. 3.)Далее в Draw() идёт прорисовка всего (то есть и фигур противника и моих). 4.)Потом изменение положения моих фигур обрабатывается в FormMouseDown и в конце этой процедуры вызывается само движение моих фигур и фигур противника вот так: if (Move()) { OppMove();}
"Думай не о задаче, а о решении" (с)
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 14.10.2011
Сообщений: 267
|
![]()
Так, конечно, не пойдет. Ваш зацикленный IdleLoop не даст нормально работать даже таймеру. На мой вкус - этот Application->OnIdle - штука достаточно опасная и неудобная.
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 28.12.2011
Сообщений: 124
|
![]()
Угу, наверное так и есть.. Только вот как сделать, чтобы перерисовка была нормальная без IdleLoop я не знаю.
"Думай не о задаче, а о решении" (с)
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 14.10.2011
Сообщений: 267
|
![]()
Если Вы используете перетаскивание картинок, то вполне сгодятся функции DragDrop. Если нет, - ну можно связать какие-то действия с
обработчиками OnMouse. Всегда есть варианты... . |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 28.12.2011
Сообщений: 124
|
![]()
У меня происходит перерисовка фигур, которые являются объектами моего класса и 3д объектами в OpenGL..
Я пробовала запихнуть SwapBuffers() или glFlush() в таймер, и вообще не использовать IdleLoop, но результат - изображение начинало моргать..
"Думай не о задаче, а о решении" (с)
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Алгоритм выбора лучшего хода | tanyhaftv | Помощь студентам | 4 | 09.06.2011 17:55 |
В заданной корректной позиции при игре в шашки определить допустимость хода белых(с учетом взятий) | Dominges | Помощь студентам | 0 | 18.10.2010 09:00 |
Пузырьки:алгоритм лучшего хода | SynEnergizer | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 2 | 05.12.2009 16:18 |
Как сделать имитацию хода даты и времени в программе? | Bill Gates | Общие вопросы Delphi | 1 | 06.01.2008 15:21 |
Как сделать имитацию хода даты и времени в программе? | Bill Gates | Общие вопросы Delphi | 1 | 05.01.2008 22:42 |