![]() |
![]() |
18192123 |
![]()
Сообщение
#1
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
Вот такое задание:
Даны два шарика диаметром М. Промоделировать движение шариков по всей плоскости экрана. Шарики могут двигаться по прямым линиям. Изменение угла движения после столкновения с границей экрана или друг с другом может быть случайной величиной. Шарик не может вылететь за пределы квадрата. Пользователь может варьировать скорости движения шариков с помощью стрелок управления курсором. Хотелось бы разобраться в коде программы... ( дело в том, что код не мой) Объясните пожалуйста назначение каждой из процедур в тексте приведённой ниже программы! Прикрепленные файлы ![]() |
![]() ![]() |
18192123 |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
Мне бы хотелось, чтобы шарики, при столкновении друг с другом, изменяли угол движения... но добиться этого не удаётся:
но шарики только проводят друг через друга..... Сообщение отредактировано: 18192123 - 21.04.2007 23:23 |
18192123 |
![]()
Сообщение
#3
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
Lapp |
![]()
Сообщение
#4
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
не пойму, в чём причина? Причин несколько. 1. ты снова забываешь сменить углы.. 2. одна переменная у тебя называется spee1 (должно быть, видимо, speed1) 3. Ты пересчитываешь параметры, но обратно из процедуры они у тебя не передаются. Чтоб передавались, используй декларацию var. Можно один вопрос? Зачем ты искусственно увеличиваешь код программы? Тебе кажется, так проще? или так от вас требуют препы? Например, функция balls_hit моогла бы выглядеть много короче.. function balls_hit (r1,r2,x1,y1,x2,y2 : integer) : boolean; Разве так не проще? Все сразу видно.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
18192123 |
![]()
Сообщение
#5
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
Lapp |
![]()
Сообщение
#6
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
не совсем тебя поняла....какие параметры я ещё должна описать внутри ф-ции? (всё, что нужно я уже передаю из программы) Вот смотри - ты вычисляешь переменные: x1 := round(x1 + speed1*cos(pi-angle1)); - после этого выходишь из процедуры. Как ты думаешь, что случается с переменными x1,y1,x2,y2? Они просто уничтожаются. Чтобы они передавались в вызывающую программу, ты должна в описании фрмальных параметров употребить декларацию var : procedure after_hit (spee1, speed2 : integer; VAR x1, y1, x2, y2 : integer; angle1, angle2 : single); То же самое касается других параметров, которые ты хочешь передать не только туда, но и обратно. Это понятно? Прочти про это в учебнике, плз. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
18192123 |
![]()
Сообщение
#7
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
То же самое касается других параметров, которые ты хочешь передать не только туда, но и обратно. Это понятно? Прочти про это в учебнике, плз. Да, понятно. Извини, с этим я "стормозила" по полной программе. Но у меня шарики всё равно проходят друг через друга...
![]() |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 6:05 |