Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2010, 14:31   #1
drower
 
Регистрация: 10.05.2010
Сообщений: 3
По умолчанию параллельное движение

Здравствуйте, программисты
пишу программу с консольной графикой на С++ 3.1 и столкнулся с проблемой реализации движения нескольких объектов одновременно..
объясните пожалуйста как реализовать, чтобы по экрану двигалось несколько объектов(круг, квадрат или еще что) по заданным траекториям и еще одним объектом можно было управлять в ручную

заранее благодарен
drower вне форума Ответить с цитированием
Старый 10.05.2010, 15:39   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Как самый простой вариант - задаете координаты каждого объекта, каждый раз в цикле меняете координаты у всех них, заново перерисовываете.
Код:
double x1 = 10, y1 = 10, x2 = 30, y2 = 30;
while (1)
 {
 x1 += 10; y1 += 20;
 x2 += 20; y2 += 10;
 rectangle(x1 - 10, y1 - 10, x1 + 10, y1 + 10);
 ellipse(x2 - 30, y2 - 20, x2 + 30, y2 + 20);
 }
Примерно так прямоугольник и эллипс будут двигаться по двум разным прямым. Мелочи вроде очистки экрана и задержки я опустил.
Для более сложных траекторий каждый раз высчитывайте новую скорость, прибавляйте ее к координатам таким вот образом:
Код:
x += Vx; y += Vy;
Для управляемого вручную объекта изменение скоростей производится в зависимости от нажатия клавиш. Нажали стрелку влево - Vx стала равна -10, нажали вниз - Vy стала равна +10.
Можете также каждую фигуру описать как отдельный класс со своими параметрами и методами.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 10.05.2010, 15:52   #3
drower
 
Регистрация: 10.05.2010
Сообщений: 3
По умолчанию

в этом случае управляемый объект будет двигаться постоянно, а нужно чтобы двигался лишь при нажатии клавиши)
и, если я правильно понял, то вся программа будет одним большим бесконечным циклом??
drower вне форума Ответить с цитированием
Старый 10.05.2010, 16:52   #4
kogemrka
Форумчанин
 
Аватар для kogemrka
 
Регистрация: 08.01.2010
Сообщений: 165
По умолчанию

Да, именно как один бесконечный цикл (хотя почему бесконечный? можно же определить условие для выхода, например, выйти, если нажата клавиша Esc).

у тебя получится что-то вроде такого:

Код:
while (1)
{
/* проверяем, нажаты ли клавиши, управляющие фигурой, если нажаты - изменяем координаты управляемой фигуры. Если нажата ESC, то 
прерываем цикл с помощью break;*/

/* Изменяем координаты движущихя объектов, кроме управляемого */

/* Рисуем все фигуры по их координатам */
}
kogemrka вне форума Ответить с цитированием
Старый 10.05.2010, 17:27   #5
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
в этом случае управляемый объект будет двигаться постоянно, а нужно чтобы двигался лишь при нажатии клавиши)
Вовсе нет. Он будет двигаться именно при нажатии клавиши:
Код:
char c = 0;
while (c != 27)
 {
 if (kbhit()) 
  c = getch();
 else
  c = 0;
 //...
 switch(c)
  {
  case 'w': /**/; break;
  case 'a': /**/; break;
  case 's': /**/; break;
  case 'd': /**/; break;
  }
 }
Или, как вариант
Код:
char c = 0;
while (1)
 {
 if (kbhit()) 
  c = getch();
 else
  c = 0;
 //...
 switch(c)
  {
  case 'w': /**/; break;
  case 'a': /**/; break;
  case 's': /**/; break;
  case 'd': /**/; break;
  }
 if (c == 27)
  break;
 }
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Параллельное программирование mages Общие вопросы C/C++ 18 25.12.2009 17:59
стандартная сортировка пузырьком. параллельное программирование. lamont61 Помощь студентам 2 11.12.2009 15:12
Параллельное решение СЛАУ Mixasik Помощь студентам 1 28.08.2008 23:44
Параллельное программирование Renegad Фриланс 5 10.06.2008 18:11
Параллельное программирование Ugly Win Api 7 16.03.2008 15:33