Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Видимо в поток |
Автор: InsideYou 3.6.2008, 15:09 |
Доброе время суток! Такая ситуация, игра пишется в MFC. Есть объект, который управляется мышкой, он прорисовывается на экране. Есть ещё несколько других объекто(2-3), они тоже прорисовываются на экране, но двигаются хаотично при помощи рандома. Получается так, что пока объект который двигает хаотично не закончит свой путь, то мышкой заставить двигаться главный объект нельзя. Как можно сделать чтобы все объекты синхронно двигались по экрану? Заранее спасибо. P.S. Срочно-завтра сдача курсача. |
Автор: rrrFer 3.6.2008, 17:53 | ||||
думаю примерно так:
тут obj это обьекты которые двигаютс, в Тime отсчитывается как долго они будут двигаться, если до какого-то события то пиши: for(;;){} а внутри где-нибудь break; step() - обьект будет сдвигаться, тогда получистя что обрабатываться объекты будут почти параллельно. Вобщем функция отрисовки того самого хаотичнодвигающегося объекта должна прерываться и передавать управление в Timer(), чтобы отсчитывать время можно использвать time() из time.h, то есть:
|
Автор: InsideYou 3.6.2008, 20:23 |
Насчёт 3х движущихся объектов Вы правы, но суть не в этом. Пока они все 3 не закончат свой путь мышка двигатся не будет. Суть игры-может видели когда-то: летают по окну 2-3 квадрата и ты сматываешь от них своим хвадратом при помощи мышки. Вот так вот. |
Автор: dizzy1984 4.6.2008, 13:05 | ||
Не знаю нужно ли тебе теперь решение, но можно попробовать добавить вызовы функции PumpMessage() в то вычисление, которое создает длительный промежуток "зависания" приложения. Чем больше - тем лучше.
Вся соль в том, что для отклика на ввод пользователя и расчетов программы в MFC используется 1 поток. (AFAIK В отличие от delphy, где нет таких проблем). Эта функция прерывает работу программы для отработки ввода пользователя. |