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

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

Войти
Регистрация
Восстановить пароль
 
Антон219
0 / 0 / 0
Регистрация: 09.06.2013
Сообщений: 68
#1

Что использовать вместо таймера для множества точек, жизнь которых - 5 секунд - C++

25.06.2014, 23:32. Просмотров 307. Ответов 4
Метки нет (Все метки)

Привет, народ, подскажите пожалуйста, как принято поступать в следующем случае:
Имеется много разных объектов, они умеют делать много вещей - двигаться, появляться и исчезать с определенной частотой и др. вещи, зависящие от таймера. Как такое реализовать?
Пример: каждый раз при нажатии кнопки на клавиатуре - в форме появляется точка. Каждая точка живет, допустим, 5 секунд, а затем исчезает. Не буду же я для каждой точки свой таймер создавать?! Это и невозможно, там ведь ограничено число таймеров. Интересен именно наиболее принятый способ, сам я могу предложить нечто такое:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SetTimer(hwnd, 1, 1000, NULL);
..........................................
switch(msg)
    {   
case WM_KEYDOWN:
        MyPoint* P = new MyPoint;
        MyVector.push_back(P);
        break;
case WM_TIMER:
        for (int i = 0; i < MyVector.size(); i++)
             {
                   P->counter += 1;
                   if(P->counter >= 5)
                   {
                         delete MyVector[i];
                         MyVector.erase(MyVector.begin() + i);
                   }
             }
        break;
Может и ошибся где, но суть, думаю передал. Так делают?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2014, 23:32     Что использовать вместо таймера для множества точек, жизнь которых - 5 секунд
Посмотрите здесь:

Верно ли, что для любой пары точек из множества все оставшиеся точки лежат по одну сторону от прямой, проведённой через эту пару - C++
Даны действительные числа x1,....x15, y1,....y15, которые рассматриваются как координаты 15 точек на плоскости. Верно ли, что для каждой из...

Рекурсия вместо трёх циклов for для генерирования точек внутри сферы - C++
нужно переделать код. Вместо 3 циклов использовать рекурсию. /* * File: main.c * Author: Admin * * Created on 29 сентября 2014...

Выбрать из точек множества три таких, чтобы в получившийся треугольник влезо наибольшее количество точек - C++
Помогите пожалуйста....Дана задача: Из заданного множества точек на плоскости выбрать 3 разные точки A,B,C так, чтобы внутри треугольника...

Изменить способ выделения памяти для массива (вместо new использовать malloc) - C++
#include &quot;stdafx.h&quot; #include &quot;stdlib.h&quot; struct str_Team{ char Komanda; int Ochki; int Gold; int Silver; int...

Задано множество точек в трехмерном пространстве. Найти минимум радиусов шаров с центрами в этих точках, содержащих ровно n точек этого множества - C++
Задано множество точек в трехмерном пространстве. Найти минимум радиусов шаров с центрами в этих точках, содержащих ровно n точек этого...

Определить 3 точки, являющиеся вершинами треугольника, для которых разность точек вне е го и внутри является минимальной. - C++
В одномерном массиве с четным количеством элементов(2n) находятся координаты n точек плоскости.Они распологаются в следующем порядке:x1...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
5276 / 4596 / 1541
Регистрация: 14.04.2014
Сообщений: 18,263
26.06.2014, 07:59     Что использовать вместо таймера для множества точек, жизнь которых - 5 секунд #2
В строках 12-13 как ты без вектора обращаешься к P?
zss
Модератор
Эксперт С++
6322 / 5906 / 1913
Регистрация: 18.12.2011
Сообщений: 15,189
Завершенные тесты: 1
26.06.2014, 08:06     Что использовать вместо таймера для множества точек, жизнь которых - 5 секунд #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Идея правильная.
Таймера достаточно одного.
А в цикле Вы проходите по всем созданным объектам
и по каким-то признакам определяете, что с ними делать.
dzrkot
zzzZZZ...
519 / 349 / 53
Регистрация: 11.09.2013
Сообщений: 1,996
26.06.2014, 11:23     Что использовать вместо таймера для множества точек, жизнь которых - 5 секунд #4
ну я так же делаю - 1 таймер, в нём итерируем все счётчики, при создании объекта выставляем счетчик в 0, при достижении 5000 объект удаляем
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2014, 17:03     Что использовать вместо таймера для множества точек, жизнь которых - 5 секунд
Еще ссылки по теме:

Надо чтобы пользователь вводил время только в секундах,вместо часов,минут и секунд - C++
Надо чтобы пользователь вводил время только в секундах,вместо часов,минут и секунд,заранее спасибо #include &lt;iostream&gt; #include...

Что использовать для рисования примитивов - C++
Ребят подскажите на чем можно программно порисовать? желательно на с++ в 12 визуалке для WinForm. находил учебники для 10 версии на...

Что лучше использовать для низкоуровневого программирования? - C++
Здравствуйте, задался я вопросом, а что лучше использовать для низкоуровневого программирования (работы со звуком и буфером), + еще...

Что лучше использовать для свойств объекта? - C++
Мне нужно хранить свойства каких то объектов. То есть, строка и для этой строки какое то значение В каком контейнере это лучше...

C++ vs C#. Что лучше использовать для поставленных задач? - C++
Приветствую всех. Интересует, что под мои задачи больше всего подходит. C++ либо C#. C++ манит своей скоростью, C#, своей простотой. ...

Даны 2 множества точек - C++
Доброй вечер, товарищи! Подскажите идею для решения задачи. Даны два множества точек на плоскости. Выбрать три различные точки...


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

Или воспользуйтесь поиском по форуму:
Антон219
0 / 0 / 0
Регистрация: 09.06.2013
Сообщений: 68
26.06.2014, 17:03  [ТС]     Что использовать вместо таймера для множества точек, жизнь которых - 5 секунд #5
Спасибо! Мне ничего другого в голову не пришло, поэтому я подозревал, что так и должно быть))

nmcf, да, согласен - ошибся, я такие вещи порой только при компиляции обнаруживаю) тогда будет как-то так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SetTimer(hwnd, 1, 1000, NULL);
..........................................
switch(msg)
    {   
case WM_KEYDOWN:
        MyPoint* P = new MyPoint;
        MyVector.push_back(P);
        break;
case WM_TIMER:
        for (int i = 0; i < MyVector.size(); i++)
             {
                   MyVector[i]->counter += 1;
                   if(MyVector[i]->counter >= 5)
                   {
                         delete MyVector[i];
                         MyVector.erase(MyVector.begin() + i);
                   }
             }
        break;
Yandex
Объявления
26.06.2014, 17:03     Что использовать вместо таймера для множества точек, жизнь которых - 5 секунд
Ответ Создать тему
Опции темы

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