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

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

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

 
 Ответить  Открыть новую тему 
> объектно-ориентированное программирование, графика.
gach
сообщение 9.05.2006 16:20
Сообщение #1





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

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


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


Может у кого есть такой пример или подобный? Очень надо. Помогите плиз!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 9.05.2006 18:28
Сообщение #2


Гость






Вот тебе набросок... Управление (по диагонали доделаешь сам, по аналогии) - с цифровой клавиатуры в режиме NumLock, клавиши 2, 4, 6, 8...

Красный объект - управляемый, белые - случайно перемещающиеся. Пока программа рассчитана на любое количество случайных объектов, и один управляемый. gach, вопрос на засыпку: почему, и можно ли этого избежать?

excl.gif
"Ну-с... Пора внести разнообразие в отдых..." (С) Особенности национальной рыбалки.

Первый, кто предложит работающее решение (естественно, в стиле ООП), при котором будет возможно в приведеную мной программу добавить больше одного управляемого объекта, получает +1 в рейтинг... smile.gif


Прикрепленные файлы
Прикрепленный файл  GR_OBJ.PAS ( 2.99 килобайт ) Кол-во скачиваний: 219
 К началу страницы 
+ Ответить 
gach
сообщение 9.05.2006 19:49
Сообщение #3





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

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


Цитата(volvo @ 9.05.2006 19:28)
Вот тебе набросок...


Окей. Сейчас посмотрим.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
gach
сообщение 9.05.2006 20:03
Сообщение #4





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

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


Оооо. ТО что надо!!!! Спасибо огромное! Теперь буду разбираться!!!! вот это спец!!!! Мой глубокий поклон!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
gach
сообщение 9.05.2006 21:37
Сообщение #5





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

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


Вот вопросик возник.
procedure TObj.recalc;
begin
Inc(X, DX); Inc(Y, DY);
end;

Что эта процедура делает? Что такое Inc(X, DX); Inc(Y, DY);?

И еще вопрос.
procedure TObj.show(is_active: boolean);
const R = 5;
begin
if is_active then setcolor(get_color)
else setcolor(TObj.get_color);

circle(X, Y, R);
end;

Что такое is_active и почему оно boolean?

И еще вопрос.
constructor TRandomObj.Init;
begin
Inherited Init;
Tick := 0;
end;


Что такое Tick? почему он нулю равен??

Сообщение отредактировано: volvo - 3.11.2006 22:30
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 9.05.2006 22:08
Сообщение #6


Гость






Значит, так... Первый вопрос:
насчет "что делает" - это попытайся разобраться сам. Что такое
Inc(X, DX); Inc(Y, DY);
- это то же самое, что
X := X + DX; Y := Y + DY;


Второе. Посмотри на вызов процедуры Show, и тебе все станет понятно. Show(False) скрывает объект, Show(True) показывает его... Почему Boolean? А мне не нужно больше 2-х состояний, объект может быть только видим/невидим... Третьего не дано. А у какого еще встроенного типа есть только 2 состояния?

Третье. Constructor тебе ничего не говорит? Зачем вообще конструкторы используются, в курсе?
Насчет "что такое Tick" - а ты найди место, где с этой переменной что-то делается, и посмотри ЧТО именно, тогда все поймешь...
 К началу страницы 
+ Ответить 
gach
сообщение 10.05.2006 9:35
Сообщение #7





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

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


Значит я правильно понял что процедура procedure TObj.recalc изменяет начальные координаты? ТО есть отвечает за движение? Или я что-то напутал?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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