IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Жучки, едят друг друга
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 31
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


Задача 229. Смоделируйте движение n случайно расположенных на плоскости жучков (точек – Авт.), каждый из которых с постоянной скоростью, ползет к жучку со следующим номером (n-й ползет к первому). При расстоянии между жучками меньшем некоторого критического преследуемый жучок считается съеденным и исчезает с экрана.

Я ее сделал, но оказалось, что жучки не должны ползти c постоянной скоростью, а должны догонять друг друга с постоянной скоросью. То есть каждый ход расстояние между двумя любыми жучками должно сокращаться.
Это, очевидно, делается через задание направления и приращения скорости, но я не понял КАК это делать.
Помогите кто-нибудь.
Прилагается моя версия программы и мой модуль.

ЗЫ. Кто хочет поприкалываться можно запускать программу в данной версии исключив процедуру Go и/или убрать очисту экрана. Получается сприкольно! ;) (Особенно если подключить драйвер BGI256)


Прикрепленные файлы
Прикрепленный файл  GERSH229.PAS ( 3.34 килобайт ) Кол-во скачиваний: 169
Прикрепленный файл  GERSH.PAS ( 652 байт ) Кол-во скачиваний: 146
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Гersh, ты не совсем ясно выразился по поводу скорости (то она постоянна, то не постоянна, но все же постоянна..). Скорость - чисто физическое понятие, и с ним не должно быть путаницы. В твоем коде понятие скорости вообще отсутствует. Просто происходит смещение либо на 1 по х, либо на 1 по у, либо сразу по обеим осям. Я рекомендую тебе подойти к этому вопросу, как полагается.

1. Обозначь границы поля в абстрактных координатах: скажем, от 0 до 1 по х и от 0 до 0.75 по у.
2. Напиши функцию перевода абстрактных координат в реальные экранные.
3. Все расчеты производи в этих абстрактных координатах, а перед выводом объекта на экран производи перевод с помощью той функции.

Если все будет написано так (и только в этом случае), понятие скорости и все остальное реализуется естественным образом. В настоящем же виде программа не годится для выполнения условий задачи.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 31
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


blink.gif
Ого!
Е мае!
Да, скорости у меня пока что в помине нет. Я просто НЕ ПОНИМАЮ вообще как с этими скоростями работать - в этом и проблема.
Я конечно намудрил с описанием скоростей... Но сама задача-то есть...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Работать со скоростями совсем не сложно.
Скорость - вектор, у него две компоненты: Vx и Vy.
Если положение точки в момент t есть х,у то то в момент t+dt будет x+Vx*dt, y+Vy*dt

Чего тут такого сложного?..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 31
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


blink.gif blink.gif
Чего??
Ну ты дал! ;))
Нет, это все ясно. У меня проплема с рассчетом координат... Чтобы расстояние между двумя любыми жучками сокращалось кажду секунду... Я просто не понимаю как это сделать... sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Гersh @ 12.05.2006 12:33) *

Чтобы расстояние между двумя любыми жучками сокращалось кажду секунду... Я просто не понимаю как это сделать... sad.gif

Это условие (между любыми) противоречит первоначальному.
Если каждый n-ный догоняет (n+1)-го, то вектор скорости направь по вектору разницы векторов на каждого из них. То есть в любой момент каждый жук ползет точно по направлению к следующему (не обращая внимания на остальных, в том числе и на того, который догоняет его). По сути, оно так и было в твоем решении, только скорость была кривая - вот и все. И результат тоже будет похожий - они все друг друга съедят. А в процессе каждый опишет траекторию, которая назвается в математике "кривая погони".


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 31
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


Да, извиняюсь... Не между любыми, а между вдумя с соседними номерами. Описался, сорри. Наврено я имел ввиду, между любыми -> любой парой -> всеми парами соседних...
В общем ясно...

Короче, понятно... Код за меня никто не напишет... А мне завтра сдаватсья... Так что спасибо за помощь... Мож подумаю на досуге...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 31
Пол: Мужской
Реальное имя: Игорь

Репутация: -  0  +


не нашел где редактирование, так что Отвечаю

кстати, прогу-то доделал, забыл выложить.

если кому вдруг интересно)

ЗЫ. правда не помню, какая версия последняя, Паскаль снес. вроде эта...


Прикрепленные файлы
Прикрепленный файл  GERSH229.rar ( 1.82 килобайт ) Кол-во скачиваний: 95
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 23.08.2017 13:15
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"