Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ объектно-ориентированное программирование, графика.

Автор: gach 9.05.2006 20:20

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


Может у кого есть такой пример или подобный? Очень надо. Помогите плиз!!!

Автор: volvo 9.05.2006 22:28

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

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

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

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


Прикрепленные файлы
Прикрепленный файл  GR_OBJ.PAS ( 2.99 килобайт ) Кол-во скачиваний: 218

Автор: gach 9.05.2006 23:49

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


Окей. Сейчас посмотрим.

Автор: gach 10.05.2006 0:03

Оооо. ТО что надо!!!! Спасибо огромное! Теперь буду разбираться!!!! вот это спец!!!! Мой глубокий поклон!!!

Автор: gach 10.05.2006 1:37

Вот вопросик возник.

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 10.05.2006 2:08

Значит, так... Первый вопрос:
насчет "что делает" - это попытайся разобраться сам. Что такое

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 13:35

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