Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.03.2016, 19:18
finlolo finlolo вне форума
Прохожий
 
Регистрация: 10.03.2016
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Передвижение точки по линии

Думаю сделать что-то в роде менеджера биатлона.
Есть спортсмен, у которого есть характеристики, которые отвечают за его участие в гонках (скорость, пульс, энергия).
Хочу сделать, чтобы гонка проходила показательно, а не просто рассчитывался результат. Для этого хочу сделать передвижение точки (спортсмена) по линии (трассе). Точка имеет относительно характеристик свою скорость передвижения по трассе, которую можно изменять во время гонки, чтобы увеличивался пульс и тратилась энергия. Также нужно сделать, чтобы скорость изменялась на подъеме и спуске.
Подскажите, что лучше использовать и как лучше сделать, если не трудно!
Ответить с цитированием
  #2  
Старый 10.03.2016, 19:45
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Взять Delphi поновее и посмотреть примеры использования FMX, там есть все что вы хотите и даже о чем не думали
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
finlolo (10.03.2016)
  #3  
Старый 11.03.2016, 00:44
finlolo finlolo вне форума
Прохожий
 
Регистрация: 10.03.2016
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

А подскажите версию, пожалуйста!
Ответить с цитированием
  #4  
Старый 11.03.2016, 18:51
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Например можете спокойно скачать последнюю версию Delphi 10 Seattle. Я на ней сейчас сижу, очень даже стабильная версия. Триального периода вам хватит за глаза для написания своей программы.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 11.03.2016, 22:19
finlolo finlolo вне форума
Прохожий
 
Регистрация: 10.03.2016
Сообщения: 4
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Например можете спокойно скачать последнюю версию Delphi 10 Seattle. Я на ней сейчас сижу, очень даже стабильная версия. Триального периода вам хватит за глаза для написания своей программы.
И все-таки хотелось бы узнать, как можно сделать с помощью Delphi 7.
Ответить с цитированием
  #6  
Старый 12.03.2016, 12:08
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Если не использовать внешние физические движки, то придется самому его писать или делать правдоподобную имитацию. Имитацию можно сделать примерно так: Создать массив точек на плоскости - трассу. Если движения будет только в одном направлении, то для каждой точки задать коэфициент сложности. Для подъема коэфициент увеличивается, для спуска уменьшается.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 14.03.2016, 15:08
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

1. Разбить трассу на точки.
2. К вычислению скорости добавить зависимость от разности между y'ом текущей точки и предыдущей (крутизна подъема/спуска). По-хорошему надо использовать аппроксимацию и находить значение производной в текущей точке.
3. По возможности для движения между точками использовать интерполяцию.
Ответить с цитированием
  #8  
Старый 14.03.2016, 21:04
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

А теперь глупый вариант. Без физических движков и пр.
1) Точка двигается по горизонтали (ось X) с некоторой V = X пикс/кадр = const. Относительно небольшой
2) После перемещения по X смотрим, находится ли точка выше или ниже линии. Вычисляем dY между новым положением точки и линией в этой координате по X - примерное изменение высоты на "пройденном" участке.
3) X пересчитывается в соответствии с dY.
4) По оси Y точка ставится на линию согласно новой позиции X.

Логично, что к примеру при подъеме в гору, новое изменение X должно быть меньше X^2/sqrt(X^2 + dY^2) (обозначим A), а при спуске с горы - больше этого значения. Поэтому можно считать новое значение на подъёме, например, как A / (1+y/x). А на спуске 2A - (A / (1+y/x)). Конечно, формулы для примера почти с потолка, как и задание. Однако я думаю, выглядеть будет плюс-минус терпимо.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 15.03.2016 в 23:06.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:12.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter