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

Модель перекрестка - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
Craz_49
0 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 3
14.07.2011, 11:25     Модель перекрестка #1
Приветствую.
Небольшая предыстория: я не программист, а будущий педагог, но так сложилось, что в рамках большой исследовательской работы возникла необходимость в создании компьютерной модели перекрестка.
Задача: необходимо смоделировать регулируемый перекресток, т.е. на полосы выставляются машинки (в соответствии с нормальным законом), едут до светофора, стоят там, если нужно, движутся дальше, иногда поворачивают.
Просто нарисовать движущиеся точки смогу даже я, с моими минимальными познаниями в С, но проблема в другом. Каждый автомобильчик должен являться отельным объектом с рядом параметров (координата, время нахождения на полосе, может быть что-нибудь еще), следовательно, должен вестись учет всех автомобилей на дороге.
Чтение литературы наводит на мысль, что такие понятия как "очередь", "стек", "двусвязный список" напрямую относятся к этой задаче.
Я не прошу писать за меня код, я прошу помочь понять как вышеописанное можно реализовать, с помощью каких средств и методов, представить структуру программы, т.к. неспециалисту сложно разобраться с чего начать, в каком направлении двигаться.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2011, 11:25     Модель перекрестка
Посмотрите здесь:

Модель лифта C++
C++ Спичечная модель
Модель СМО на С++. Реально? C++
C++ модель атома
Физическая модель C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1875 / 987 / 61
Регистрация: 29.03.2010
Сообщений: 2,983
14.07.2011, 12:41     Модель перекрестка #2
Перекрёсток - это типичная задача, для людей которым нужно выучить работу многопоточного приложения.
Могу посоветовать сделать следующее:
1) описать класс автомобиль\пешеход\движущаяся_точка, в нем хранить текущие координаты объекта и описывать его намерения (поехать прямо, повернуть, врезаться и т.п.)
2) Светофор можно реализовать с помощью 8-и очередей (не обязательно это единственно верный вариант).
3) Каждый объект который находится на светофоре, добавлять в одну из очередей и запускать отрисовку объекта в отдельном потоке.
4) Для разрешения проблемы, что объекты наезжают друг на друга на перекрёстке - нужно использовать мьютексы, которые будут блокироваться и запрещать некоторым очередям опустошаться\наполняться.

В общем как-то так. Надеюсь помог и не запутал ещё больше.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
14.07.2011, 22:06     Модель перекрестка #3
Цитата Сообщение от Craz_49 Посмотреть сообщение
Просто нарисовать движущиеся точки смогу даже я, с моими минимальными познаниями в С, но проблема в другом.
как это?
Craz_49
0 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 3
15.07.2011, 08:39  [ТС]     Модель перекрестка #4
Цитата Сообщение от l_a_m Посмотреть сообщение
типичная задача, для людей которым нужно выучить работу многопоточного приложения.
- звучит пугающе на самом деле.

Цитата Сообщение от kravam Посмотреть сообщение
как это?
Если мне не изменяет память, то нарисовать простую фигуру и заставить ее перемещаться с использованием OpenGL не слишком сложно.


Цитата Сообщение от l_a_m Посмотреть сообщение
2) Светофор можно реализовать с помощью 8-и очередей
Вот этот момент не совсем понятен, разве не 4 очереди (по одной на каждую полосу)?
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1875 / 987 / 61
Регистрация: 29.03.2010
Сообщений: 2,983
15.07.2011, 09:51     Модель перекрестка #5
Цитата Сообщение от Craz_49 Посмотреть сообщение
- звучит пугающе на самом деле.
Да ничего там страшного нет, тем более что тема стара как мир я больше чем уверен, если поискать на Вики, то найдёте уже готовое решение.

Цитата Сообщение от Craz_49 Посмотреть сообщение
Вот этот момент не совсем понятен, разве не 4 очереди (по одной на каждую полосу)?
не знаю, я бы сделал с помощью 8и, так проще ИМХО (очередь 1,2 - верхняя часть перекрёстка, движение 1) вверх (левая полоса), 2)вниз (правая полоса); очередь 3,4 - нижняя часть перекрёстка, и т.д.)
Craz_49
0 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 3
24.07.2011, 12:20  [ТС]     Модель перекрестка #6
Возникли вопросы:
1) Каким образом можно организовать выполнение функции с периодичностью в n секунд (например переключение светофора каждые 10 секунд)?
2) Как создавать объекты с уникальными именами (car1, car2, ...), не вручную конечно же?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2011, 12:33     Модель перекрестка
Еще ссылки по теме:

Модель стека C++
Программа на C++, которая переводит цветовую модель RGB в модель HSV C++
C++. Виртуальная модель C++

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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.07.2011, 12:33     Модель перекрестка #7
Цитата Сообщение от Craz_49 Посмотреть сообщение
1) Каким образом можно организовать выполнение функции с периодичностью в n секунд (например переключение светофора каждые 10 секунд)?
использовать таймер

Цитата Сообщение от Craz_49 Посмотреть сообщение
2) Как создавать объекты с уникальными именами (car1, car2, ...), не вручную конечно же?
либо вручную, либо массив
Yandex
Объявления
24.07.2011, 12:33     Модель перекрестка
Ответ Создать тему
Опции темы

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