Другие языки программирования и технологии

нужна прога на паскале

Необходимо нарисовать цифру «1», причем контуром использовать символы «*», а сама цифра должна появляться на экране не сразу, а прорисовываться по часовой стрелке, начиная с верхней правой точки. Плюсом в реализации задания будет динамическое изменение цвета контура при рисовании фигуры
uses crt;
const x = 30;y=20;
const
e : Array [1..50,1..2] of byte = (
(x+10,y-13),
(x+10,y-12),
(x+10,y-11),
(x+10,y-10),
(x+10,y-9),
(x+10,y-8),
(x+10,y-7),
(x+10,y-6),
(x+10,y-5),
(x+10,y-4),
(x+10,y-3),
(x+10,y-2),
(x+10,y-1),
(x+10,y),
(x+9,y),
(x+8,y),
(x+7,y),
(x+6,y),
(x+5,y),
(x+4,y),
(x+3,y),
(x+2,y),
(x+1,y),
(x,y),
(x,y),
(x,y-1),
(x,y-2),
(x,y-3),
(x,y-4),
(x,y-5),
(x,y-6),
(x,y-7),
(x,y-8),
(x-1,y-8),
(x-2,y-8),
(x-3,y-8),
(x-4,y-8),
(x-3,y-9),
(x-2,y-10),
(x-1,y-11),
(x,y-12),
(x+1,y-13),
(x+2,y-13),
(x+3,y-13),
(x+4,y-13),
(x+5,y-13),
(x+6,y-13),
(x+7,y-13),
(x+8,y-13),
(x+9,y-13));
var i : byte;
j : integer;
begin
clrscr;
randomize;
for i := 1 to 50 do
begin
gotoxy(e[i,1],e[i,2]);
TextColor(random(15));
write('*');
delay(10000);
delay(10000)
end;
end.
ВД
Влад Дестриков
6 004
Лучший ответ
Доброго времени суток.

Один из вариантов. Объявляете два массива или один массив записей из двух полей в которые записаны координаты знакомест экрана. А затем в цикле выводите в указанные позиции символы "*".

for j:=1 to N do begin
GoToXY(X[j],Y[j]);
Write('*');
Delay(T);
end;

Если надо менять цвет, то можно поступить по разному. Либо менять цвет выводимой точки, либо всего контура, в том числе и уже нарисованного. Если только выводимого, то достаточно в нужные моменты установливать цвет процедурой

TextColor(Color);

Если надо изменять цвет всего контура, то цикл следует немного модифицировать.

for k:=1 to N do
for j:=1 to k do begin
GoToXY(X[j],Y[j]);
Write('*');
Delay(T);
end;

Поскольку в ТР доступно только 15 цветов, то смену чвета можно делать так

TextColor((k mod 15)+1); {+1 чтобы не было черного цвета}

При таком подходе цвет будет меняться при выводе каждой новой точки. Если смену цвета надо сделать реже, то это тоже решаемо.

Переменная Т определяет время задержки между выводами точек, т. е. скорость вывода фигуры.

Другим методом может быть динамическое генерирование координат экрана. Здесь думать надо.

Удачи!
RD
Ramazan Davuza
59 612