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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
D_Ok
44 / 33 / 12
Регистрация: 11.02.2014
Сообщений: 134
#1

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

07.05.2014, 15:10. Просмотров 367. Ответов 7
Метки нет (Все метки)

Помогите разобраться, можно ли в консоле сделать так, что-бы одновременно выполнялось два и больше действий? Например управляя танком стрельнуть (снаряд летит медленно), и уже независимо от танка снаряд продолжает менять свои координаты, танк двигается дальше... как это реализовать? Нужна ли для этого многопоточность?
Или так: по экрану движется две, три... точки с разной скоростью.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2014, 15:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Два и больше действия одновременно, как реализовать? (C++):

Как реализовать ввод и чисел и символов одновременно? - C++
1. Как реализовать ввод и чисел и символов одновременно в одномерном массиве? 2. Как реализовать проверку на однократный ввод для чисел и...

Как проигрывать два (и более) wave звука одновременно - C++
Мне нужно проигрывать несколько звуковых файлов одновременно. Например, в одно и то же время включить два звука. Или включить звук, не...

Как реализовать стек, хранящий разные типы данных одновременно? - C++
стек нужно реализовать на основе односвязного/двусвязного списка. Я так понял, что у нас должен быть класс являющийся узлом стека, и уже...

абстрактный класс как реализовать данные, над которыми методы выполняют какие-либо действия - C++
Абстрактный класс как реализовать данные, над которыми методы выполняют какие-либо действия Задание: форматированный ввод и вывод...

Как совместить два (или больше) информационных потока? - C++
Здравствуйте У меня вопрос, как совместить два (или больше) информационных потока? Например один выполняется в реальном времени, а другой...

Как реализовать игру на два игрока - C++
Есть два обьекта. Как сделать так, чтобы каждым из них можно было отдельно управлять и стрелять? #include <hge.h> #include...

7
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
07.05.2014, 15:11 #2
Цитата Сообщение от D_Ok Посмотреть сообщение
Нужна ли для этого многопоточность?
нужно
0
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
07.05.2014, 15:11 #3
Цитата Сообщение от cooller Посмотреть сообщение
нужно
не нужно. Извините, но "танчики" даже и под ДОСом, и под "тетрисом" работали.
Там по-вашему тоже многопоточные ОС?
1
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
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();
    }
}
1
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
07.05.2014, 15:18 #5
Kuzia domovenok, действительно, тупанул(
0
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 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;
      }
  }
}
1
D_Ok
44 / 33 / 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();
   }
если я правильно понял, мы двигаем пулю(пускай первую) на определенную длину(но не до конца), запоминаем координаты, дальше выходим из этого цикла, и снова читаем клавишу огня или движения, и снова заходя в цикл продолжаем движение пули, с координат которые запомнили?
0
dimcoder
Полярный
466 / 439 / 68
Регистрация: 11.09.2011
Сообщений: 1,137
07.05.2014, 17:23 #8
D_Ok, да, все правильно. Стерли пулю с экрана (этого я в коде не написал), подвинули ее на определенное расстояние (скорость), нарисовали эту пулю. Анимация.
0
07.05.2014, 17:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2014, 17:23
Привет! Вот еще темы с ответами:

Как реализовать два объекта под одним типом? - C++
Проблема состоит в том, что я хочу чтобы можно было приводить тип ссылки родительского класса, к классу сыновей. class Memory_Object ...

Два таймера одновременно - C++
Есть функция таймер: void timer(int s,int m,int h){ cout.fill('0'); while(true){ system(&quot;cls&quot;); cout.width(2); ...

два одновременных действия - C++
Привет всем. Хотел бы спросить у знающих , как в Си программе выполнять два одновременных действия. Допустим , чтобы в консольном...

Найти максимальную длину слова в заданной строке (как реализовать функцию, возвращающую два значения?) - C++
Задание в прикрепленном изображении. Весь форум облазил, все говорят про структуры, можно ли без них обойтись? Мне бы вернуть указатель и...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru