| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Одновременное выполнение нескольких функций. Как? |
| Автор: Spirit87 4.5.2006, 08:39 |
| Вем привет. Я должен написать игру типа "сквош". Это такая игра, где вы видите две ракетки в виде прямоугольников (одна ваша, другая CPU) и шарик в виде маленького квадратика, который вы должны отбивать своей ракеткой, а CPU -- своей. Напоминает настольный теннис. И в ходе написания программы возник следующий вопрос. Насколько я понял, программа должна состоять, как минимум, из двух частей. Одна из них должна осуществлять движение мяча и соответствующее передвижение ракетки CPU. Вторая должна реагировать на сообщения о передвижении мыши пользователем и изменять координаты соответствующей ракетки. Вопрос: как сдлеать, чтобы выше упомянутые части программы выполнялись одновременно? Мне посоветовали использовать потоки. Действительно ли потоки могут здесь помочь? |
| Автор: Fazil6 4.5.2006, 09:09 | ||
действительно. Тебя не обманули. |
| Автор: likehood 4.5.2006, 09:24 |
| А ты начни писать, многие вопросы отпадут сами собой |
| Автор: Heremum 4.5.2006, 10:58 |
| Spirit87 Видно вы только только начали заниматься разработкой игровых движков, хотябы самых примитвных. Это хорошо, я всегда так радуюсь, когда нахожу новичка, которому могу рассказать что-дибо! Во-первых: разработку любой игры не делят на части по функциями: ракетка, мяч и т.п. Их делят по принципиально разным аспектам программирования: графика, звук, алгоритмические расчёты. Обработак движения мыши, полёта мячика и движение ракетки - это всё аналитика и не надо помещать обработку их в разные потоки, потому это не требуется, да и так твоя игра не будет правильно работать. Для начала о "многопоточности" или так называемой мульти-задачности windows: программы запущенные в windows не выполняются одновременно никогда. Это невозможно впринципе, потому что процессор у тебя один(или у тебя их больше? Смотри: ты сначала обсчитываешь то, где находится ракетка, где находится мяч, отражается ли мячик от ракетки или пролетает мимо, забивая гол, исходя из этого ты знаешь координаты ракеток, мячика и вообще положение дел, и только лишь когда ты их будешь знать, ты сможешь нарисовать текущий кадр сцену игры. Поэтому если ты юудешь выполнять просчёты параллельно, то расчёты будут не верны, будут ошибки и соответственно игры не получится. Сначала просчёт всей аналитики, а потом вывод на экран. Запомни. |