Создать библиотеку объектных типов, которая должна содержать, как минимум, описания одного родительского типа и двух дочерних. Прообразом создаваемых объектов должен послужить движущийся графический объект. Объекты должны отличаться методами движения: один должен уметь двигаться по экрану случайным образом, другой – под управлением соответствующих клавиш в восьми возможных направлениях (вертикальных, горизонтальных, диагональных). Разработать программу – объектно-ориентированное приложение, в котором должно быть организовано движение по экрану, как минимум, двух экземпляров динамических объектов:
Первого – случайным образом, второго – под управлением соответствующих клавиш.
Может у кого есть такой пример или подобный? Очень надо. Помогите плиз!!!
Вот тебе набросок... Управление (по диагонали доделаешь сам, по аналогии) - с цифровой клавиатуры в режиме NumLock, клавиши 2, 4, 6, 8...
Красный объект - управляемый, белые - случайно перемещающиеся. Пока программа рассчитана на любое количество случайных объектов, и один управляемый. gach, вопрос на засыпку: почему, и можно ли этого избежать?
"Ну-с... Пора внести разнообразие в отдых..." (С) Особенности национальной рыбалки.
Первый, кто предложит работающее решение (естественно, в стиле ООП), при котором будет возможно в приведеную мной программу добавить больше одного управляемого объекта, получает +1 в рейтинг...
Прикрепленные файлы
GR_OBJ.PAS ( 2.99 килобайт )
Кол-во скачиваний: 308
Оооо. ТО что надо!!!! Спасибо огромное! Теперь буду разбираться!!!! вот это спец!!!! Мой глубокий поклон!!!
Вот вопросик возник.
procedure TObj.recalc;
begin
Inc(X, DX); Inc(Y, DY);
end;
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;
constructor TRandomObj.Init;
begin
Inherited Init;
Tick := 0;
end;
Значит, так... Первый вопрос:
насчет "что делает" - это попытайся разобраться сам. Что такое
Inc(X, DX); Inc(Y, DY);- это то же самое, что
X := X + DX; Y := Y + DY;
Значит я правильно понял что процедура procedure TObj.recalc изменяет начальные координаты? ТО есть отвечает за движение? Или я что-то напутал?