Модуль GRAPH., Движение объектов. |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Модуль GRAPH., Движение объектов. |
Psychologist |
18.03.2008 19:56
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Добрый вечер.
Вот задача: нарисовать и анимировать неск. объектов. (ну вообще-то задача намного длиннее, но не суть...). Код программы: Program Lab_09; Скачать исходник можно здесь: http://narod.ru/disk/11290000/LAB_09.PAS Проблема заключается в том, что траектория движение точек - дуга. Программа, после каждого перемещения смотрит: не достигла ли точка 0 или 180 градусов. И если точка доехала до указанных углов, то начинается обратное действие. Всё вроде норм. Только последний объект почему-то "разворачивается" только при 180 градусах, а при 0 - нет. Скажите, в чём ошибка? |
volvo |
18.03.2008 20:55
Сообщение
#2
|
Гость |
Во-первых, ты не инициализировал поле Angle, а во-вторых, лучше:
... |
Psychologist |
18.03.2008 21:02
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
volvo, Огромное спасибо! IF исправил. (Angle - у меня это alpha).
|
volvo |
18.03.2008 21:17
Сообщение
#4
|
Гость |
Ну, какая разница. Оно у тебя все равно не инициализировано. А надо бы, это источник ошибок... Кстати, у тебя тема-то какая? ООП или графика? Ибо если ООП - то я бы не принял такую программу: основной принцип ООП нарушен.
|
Psychologist |
18.03.2008 21:24
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
ООП, конечно. Но сдавать, слава Богу, не завтра. Я ещё доработаю, как виртуальные методы (сли ты по поводу 3-х кратного описания точек).
|
volvo |
18.03.2008 21:29
Сообщение
#6
|
Гость |
Нет, я по поводу отсутствия инкапсуляции... Вот этого:
Цитата P1.R:=75; |
Psychologist |
19.03.2008 19:12
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Продолжение...
Теперь (по идее) должна появиться окружность в нижнем прямоугольнике и действовать так же, как точки (двигаться по дуге, менять направление при 0 и 180 градусах). Я сделал вот так, ничего не изменилось: Program Lab_09; В чём ошибка? Сообщение отредактировано: Psychologist - 19.03.2008 19:13 |
volvo |
19.03.2008 19:30
Сообщение
#8
|
Гость |
Во-первых, C1 и C2 - это окружности, а значит - тип TCircle... А во-вторых - для того, чтобы вызвать из метода предка (Move) метод потомка (Hide/Show), надо использовать виртуальные функции, иначе будут вызываться одноименные методы объекта того же уровня, из которого вызывается Move...
P.S. Не забудь про конструкторы, иначе будут проблемы. |
Psychologist |
19.03.2008 19:47
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 37 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
volvo, ещё раз СПС!
Про тип, конечно, забыл, а вот с виртуальными методами прйдётся сейчас повозиться... |
Текстовая версия | 4.06.2024 21:17 |