Форум программистов, компьютерный форум CyberForum.ru

Два и больше действия одновременно, как реализовать? - C++

Восстановить пароль Регистрация
 
D_Ok
43 / 32 / 12
Регистрация: 11.02.2014
Сообщений: 134
07.05.2014, 15:10     Два и больше действия одновременно, как реализовать? #1
Помогите разобраться, можно ли в консоле сделать так, что-бы одновременно выполнялось два и больше действий? Например управляя танком стрельнуть (снаряд летит медленно), и уже независимо от танка снаряд продолжает менять свои координаты, танк двигается дальше... как это реализовать? Нужна ли для этого многопоточность?
Или так: по экрану движется две, три... точки с разной скоростью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2014, 15:10     Два и больше действия одновременно, как реализовать?
Посмотрите здесь:

Как проигрывать два (и более) wave звука одновременно C++
абстрактный класс как реализовать данные, над которыми методы выполняют какие-либо действия C++
C++ как реализовать условие больше или равно, меньше или равно для простых дробей в классе?
Как реализовать два объекта под одним типом? C++
C++ Два таймера одновременно
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
07.05.2014, 15:11     Два и больше действия одновременно, как реализовать? #2
Цитата Сообщение от D_Ok Посмотреть сообщение
Нужна ли для этого многопоточность?
нужно
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
07.05.2014, 15:11     Два и больше действия одновременно, как реализовать? #3
Цитата Сообщение от cooller Посмотреть сообщение
нужно
не нужно. Извините, но "танчики" даже и под ДОСом, и под "тетрисом" работали.
Там по-вашему тоже многопоточные ОС?
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
07.05.2014, 15:13     Два и больше действия одновременно, как реализовать? #4
Цитата Сообщение от D_Ok Посмотреть сообщение
Нужна ли для этого многопоточность?
Не нужна. Вспомнить то же денди...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
while (true)
{
    if (UserPressedKeyToMoveTank)   //проверили инпут юзера   
        tank.move();    //если юзер захотел подвинуть танк, пожалуйста
 
    tank.draw();    //рисуем
 
    for (int i = 0; i < bullets.size(); i++)   //двигаем все что должно двигаться, рисуем
    {
        bullets[i].move();
        bullets[i].draw();
    }
    for (int i = 0; i < grass.size(); i++)
    {
        grass[i].move();
        grass[i].draw();
    }
}
cooller
 Аватар для cooller
564 / 532 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
07.05.2014, 15:18     Два и больше действия одновременно, как реализовать? #5
Kuzia domovenok, действительно, тупанул(
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
07.05.2014, 15:22     Два и больше действия одновременно, как реализовать? #6
Цитата Сообщение от D_Ok Посмотреть сообщение
Или так: по экрану движется две, три... точки с разной скоростью.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
struct game_object{
  int x, y;
  int vx, vy;
}
std::vector<game_object> bullets;
int main(){
 
  while(1){//main loop
    for(int i=0; i<bullets.size(); i++){
        bullets[i].x+=bullets[i].vx;
        bullets[i].y+=bullets[i].vy;
        draw(bullets[i]);
    }
    if (keypressed)
      switch(key){
          case FIRE_BUTTON:
              game_object new_bullet;
              new_bullet.x=my_x;
              new_bullet.x=my_x;
              new_bullet.vx=my_direction_x;
              new_bullet.vy=my_direction_y;
              bullets.push_back(new_bullet);
              break;
      }
  }
}
D_Ok
43 / 32 / 12
Регистрация: 11.02.2014
Сообщений: 134
07.05.2014, 17:16  [ТС]     Два и больше действия одновременно, как реализовать? #7
Цитата Сообщение от dimcoder Посмотреть сообщение
C++
1
2
3
4
5
for (int i = 0; i < bullets.size(); i++) * //двигаем все что должно двигаться, рисуем
   {
     bullets[i].move();
     bullets[i].draw();
   }
если я правильно понял, мы двигаем пулю(пускай первую) на определенную длину(но не до конца), запоминаем координаты, дальше выходим из этого цикла, и снова читаем клавишу огня или движения, и снова заходя в цикл продолжаем движение пули, с координат которые запомнили?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2014, 17:23     Два и больше действия одновременно, как реализовать?
Еще ссылки по теме:

C++ Как реализовать ввод и чисел и символов одновременно?
C++ Разделить массив на два: числа больше пятнадцати и меньше
C++ Как реализовать игру на два игрока

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
07.05.2014, 17:23     Два и больше действия одновременно, как реализовать? #8
D_Ok, да, все правильно. Стерли пулю с экрана (этого я в коде не написал), подвинули ее на определенное расстояние (скорость), нарисовали эту пулю. Анимация.
Yandex
Объявления
07.05.2014, 17:23     Два и больше действия одновременно, как реализовать?
Ответ Создать тему
Опции темы

Текущее время: 16:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru