![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| naumann |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 21.12.2011 Репутация: нет Всего: нет |
Это требование предъявляемые к программе...я не прошу делать за меня... просто подскажите опытным советом, в какую сторону думать ... Заранее большое спасибо=)
Приложение моделирует спринтерский заезд двух автомобилей... на 402 метра, каждую секунду в консоль нужно выводить: - Имя водителя; - Текущую скорость; - Пройденное расстояние; Автомобили стартуют одновременно... по достижению финиша автомобиль останавливается, когда оба авто пересекают финиш... выводиться итоговое время и занятое место ... Программа моделирует несколько заездов разных авто... Это сообщение отредактировал(а) naumann - 21.12.2011, 12:38 |
|||
|
||||
| lazycat |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 227 Регистрация: 15.7.2007 Репутация: 1 Всего: 1 |
IMHO проще всего будет сделать многопоточную программу: один поток - "трасса", контроль за автомобилями, вывод необходимых данных на консоль и т.д. и по одному потоку на каждый автомобиль.
Ну а при моделировании автомобиля - полная свобода фантазии. Можно учитывать / не учитывать инерцию, можно отслеживать / не отслеживать ряд, в котором едет машина, факт, что дорогу заслоняет другой автомобиль и т.д. В простейшем случае - каждому автомобилю рандомную скорость и вперед. Успехов. |
|||
|
||||
| DeadlyAngel |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 13.3.2010 Репутация: нет Всего: нет |
в <epam> чтоkли поступаешь))))????
Это сообщение отредактировал(а) DeadlyAngel - 22.12.2011, 06:21 |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Странное условие. О рекорде скорости 1898 года речь идет? На современнях-то скоростях мало что увидишь при частоте вывода один раз в секунду Думаю, все можно сделать очень просто. Трасса моделируется прямой (какими трассы драгстеров и являются), два автомобиля ускоряются по законам физики 7-го класса. Что еще надо при частоте-то вывода 1 раз в секунду. Но если по уму, то как сказал lazycat, программу лучше делать многопоточной. Тогда можно будет делать и с большей частотой и автомобили добавлять и другие фичи без боязни, что пользовательский интерфейс зависать будет. Но не думаю, что так уж обязательно моделировать все по отдельности. Для начала два потока - рассчет положения автомобилей на трассе и показ результатов пользователям. Как это осуществить? - Так же как как делаются прогресс бары. Вот хотя бы только что обсуждали. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| naumann |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 21.12.2011 Репутация: нет Всего: нет |
да хотел=)... Спасибо ребят за советы=)... |
|||
|
||||
| naumann |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 21.12.2011 Репутация: нет Всего: нет |
... в каждого из авто есть свойство ускорение и максимальная скорость. Взял формулы для определения текущей скорости:
v = a*t, где a-ускорение, t-время и пройденного пути: s=v*t, где v-текущая скорость, t-время ... ммм... как лучше засечь время (если так можно выразиться) при старте авто, чтобы его можно было подставлять в формулу... просто сделать счетчик? или?... |
|||
|
||||
| Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 7 Всего: 17 |
Вообще говоря пройденный путь считается не так. он равен s=a*t^2/2. Время считается с момента старта, посему просто считать секундами, например. Если нужна большая точность - то с более мелким шагом. -------------------- Mirkes |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
naumann, для начала разгона формулы v = a*t и s=a*t^2/2, конечно, годятся. Но по уму они применимы только к сферическому коню в вакууме, поскольку подразумевают неограниченную максимальную скорость автомобиля. На самом же деле нужно учитывать, что сопротивление его движению растет со скоростью. При этом мощность двигателя в идеале просто псостоянна.
Реалный случай описать довольно сложно: 1. Сопротивление качению растет со скоростью - формулу не знаю. 2. Аэродинамическое сопротивление растет пропрорционально квадрату скорости. 3. Мощность двигателя звисит от его оборотов и проходит через максимум. Кривая довольно сложная. 4. Обороты двигателя связаны с выбранной передачей трансмиссии. Передачи же за время разгона переключаются. Но это уже полный офф. Врядли стоит задача описания объективной реальности. Я бы просто взял для скорости формулу кривой с насыщением. Что-то вроде v = max*t/(d+t). У этой формулы начальный участок близок к линейной зависимости, а потом наступает насыщение при приближении к максимальной скорости max. И еще. Не делайте инкрементальное увеличение скорости и/или пройденного пути. Это очень распространенная ошибка. В каждом цикле считайте скорость и путь по одной и той же формуле; т.е. от старта. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| naumann |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 21.12.2011 Репутация: нет Всего: нет |
... Еще раз спасибо за Ваши ответы, но еще вопрос если позволите...
Пусть у меня есть коллекция машин-участниц ArrayList<Car> cars; Нужно задать последовательность заездов всех элементов(машин) этой коллекции т.е. берем 0 и 1 элемент(1 и 2 машину из коллекции) они соревнуются между собой... потом возвращаемся в коллекцию берем 2 и 3 элемент(3 и 4 машину)... и т.д... как лучше пройти коллекцию?! Это сообщение отредактировал(а) naumann - 24.12.2011, 16:55 |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
В простейшем варианте - последоовательный проход:
Но вариант этот не очень хорош, т.к. машинка с i=0 должна гоняться во всех начальных заездах подряд. В реальных соревнованиях каждый участник должен получить перерывы более-менее одинаковые. Поэтому в вышенаписанном цикле лучше просто собрать коллекцию пар участников, потом отсортировать эту коллекцию так, чтобы между заездами у каждой машинки были паузы. Сделать это можно, видимо, по-разному. Но как это делается по-уму не скажу. Здесь мой многолетний опыт участия в гонках Фомулы-1 (в качестве телезртеля) бесполезен, т.к. в моей формуле машинки стартуют всем кагалом. Можно постомтреть на спортивных вебсайтах как формируются старты в спидвее (ледовые и гаревые гонки на мотоциклах). Там тот принцип, что Вам нужен, но стартуют четверками. Или уж искать про сами драгстеры (вообще Ваш случай). -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| naumann |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 21.12.2011 Репутация: нет Всего: нет |
=)спасибо ... |
||||
|
|||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |