![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Soxatyi |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Захотелось написать забавную задачку, но возникла проблемка при её реализации.
Задаются начальные координаты точки и её цвет, для нее генерится точка-цель. Точка устремляется к цели, причем на каждом шаге к координатам точки довешивается рандомное значение (назовем его заносом), лежащее в промежутке [-foo,foo]. Как только расстояние от точки до цели меньше половины заноса, задается новая цель и цвет и так далее. Например, при foo = 0 точка просто движется к цели без всяких заносов. Вот что у меня получилось: uses crt,graph; Во время работы проги кнопками '+' и '-' можно изменять величину заноса, '0' - устанавливать занос = 0, 'c' - чистить экран. Собственно, не устраивает меня реализация устремления точки к цели. Сейчас она движется сначала по диагонали |x|=|y|, а как только одна из координат становится равной координате цели, то сигнатура начинает выдавать нуль и точка движется только по горизонтали или только по вертикали. Каким бы ни был занос, точка всегда пытается выйти на такой путь. Естественно, хочется, чтобы точка пыталась двигаться не по этому галкообразному маршруту, а сразу по диагонали. Поскольку объяснил я чуток кривовато, прилагаю картинку с тем, чего мне хочется. ;) ![]() Буду дико благодарен за помощь. |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Ну, насколько я понимаю, "Кривая погони" должна тебе помочь? У тебя "цель" движется? В моей программе - погоня за движущейся целью...
|
Soxatyi |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цель абсолютно неподвижна и меняется только после её достижения. Я не представляю, как мне использовать твою программу про зайца, потому как там нету все портящего случайного заноса.
Если бы заноса не было, то решение было б очевидно. Я бы перевел x и y в real и в момент задания цели вычислил бы скорость: buf:=max(abs(v-x),abs(w-y)); {в буферную переменную закидываю длину бОльшего катета} После чего вместо двух inc использовал бы следующее: x:=x+vx; Но в моем случае вычисленные так значения скорости стали бы неверны уже после первого заноса. |
мисс_граффити |
![]()
Сообщение
#4
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
есть смутная мысль...
если ты можешь реализовать y=x, то сможешь и y=2x, допустим?... -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Soxatyi |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
О, осенило! В моем случае достаточно лишь перерассчитывать эти vx и vy не только при задании новой цели, но и вообще на каждом витке цикла!
uses crt,graph; Теперь все работает как надо. |
![]() ![]() |
![]() |
Текстовая версия | 21.06.2025 9:37 |