Задание 1

Начнем с описания объекта «рыба». Этот объект должен иметь свойства (поля): координаты, цвет, название; методы: вывода на экран Drow, инициализации Init, т.е. установки координат, цвета и изображения на экране с помощью метода Drow.

Такое описание объекта «рыба» в программе будет выглядеть следующим образом:

type

tfish=object

x,y,col:byte; {свойства объекта: x,y – координаты, col – цвет}

name:char; {свойство объекта – название}

procedure drow(x1,y1:byte; s:char); {метод объекта, изображающий его на экране}

procedure init; {метод, инициализирующий объект}

end;

Замечание: решение задачи будем выполнять в текстовом режиме.

После описания объектного типа для примера и контроля введем один экземпляр данного типа:

Var f: tfish;

Заметим сразу, что этот экземпляр объектного типа мы используем для проверки описания методов объектного типа «рыба», чтобы проверить правильность установки текстового режима, выбора цвета и т.д.

Далее в тексте программы в разделе описания процедур и функций следует описание методов объектного типа «рыба»:

procedure tfish.drow;

begin

GoToXY(x1,y1); {устанавливаем курсор на позицию с координатами x1, y1}

write(s); {«рыбу» изобразим символом }

delay(100); {поставим задержку на 100 миллисекунд для того, чтобы, когда будем выводить на экран много рыб, они появлялись постепенно}

end;

procedure tfish.init;

begin

x:=random(80); {случайным образом задаем значение столбца от 1 до 80}

y:=random(25); {случайным образом задаем значение строки от 1 до 25}

col:=random(15); {случайным образом задаем цвет от 0 до 15}

TextColor(col); {устанавливаем цвет выводимой буквы}

Name:=chr(random(100)) {случайным образом задаем название «рыбы» как символ, соответствующий коду от 1 до 100}

drow(x,y,name); {обращаемся к методу, изображающему «рыбу» на экране}

end;

А сейчас напишем вспомогательную процедуру, «заполняющую аквариум водой», эта процедура не имеет отношения к объектно-ориентированному программированию, но для решения нашей задачи может пригодиться, хотя бы просто для красоты.

procedure fon;

var

i,j,k:byte;

begin

TextColor(Blue); {установим цвет выводимых символов, совпадающий с цветом фона}

for j:=24 downto 1 do begin

for i:=40 downto 1 do begin

k:=80-i+1; GotoXY(i,j);

write(chr(219)); {выводим символ, соответствующий коду 219 – прямоугольник}

GotoXY(k,j);

write(chr(219)); {выводим символ, соответствующий коду 219 – прямоугольник}

delay(12); {эта процедура позволяет устанавливать время задержки в миллисекундах}

end; end; end;

После всех предварительно проделанных действий мы можем написать программу, в которой определим объектный тип «рыба» с его свойствами и методами, «заведем» одну из «рыб», «заполним аквариум водой» и поместим туда одну нашу «рыбку»:

program fish;

uses crt; {для использования процедур работы в текстовом режиме необходимо подключить специальный модуль CRT}

Type

tfish=object {описание объектного типа «рыба»}

x,y,col:byte; name:char

procedure drow(x1,y1:byte; s:char);

procedure init;

end;

Var

f:tfish;

procedure tfish.drow;

begin

GoToXY(x1,y1);

write(s); delay(100)

end;

procedure tfish.init; {метод, инициализирующий объект «рыба»}

begin

x:=random(80); y:=random(25); col:=random(15);

TextColor(col);

Name:=chr(random(100));

drow(x,y,name);

end;

procedure fon; {«заполнение аквариума водой»}

var

i,j,k:byte;

begin

TextColor(Blue);

for j:=24 downto 1 do begin

for i:=40 downto 1 do begin

k:=80-i+1;

GotoXY(i,j); write(chr(219));

GotoXY(k,j); write(chr(219));

delay(12);

end; end; end;

begin {начало основной программы}

clrscr; {очищаем экран}

randomize; {активизируем функцию генерации случайных чисел}

TextMode(CO80); {устанавливаем текстовый режим цветной, 80*25}

TextBackGround(Blue); {устанавливаем синий цвет фона}

fon; {«заполняем аквариум водой»}

f.init; {«размещаем рыбку в аквариуме», используя метод инициализации объекта «рыба»}

readln;

end.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: