Консультация № 163386
27.03.2009, 13:42
0.00 руб.
0 1 1
Здравствуйте.Помогите пожайлуста решить программу:

Составить программу перемещения по экрану вводимой предварительно с
клавиатуры текстовой строки.Перемещение осуществляется по восьми
направления, причем каждому направлению должен соответсвовать
определенный цвет вывода строки.

Обсуждение

давно
Профессор
401888
1232
27.03.2009, 15:07
общий
это ответ
Здравствуйте, Афонин Иван Анатольевич!
Вариант решения с пояснениями в приложении.

Приложение:
uses crt;{модуль обязательно}
procedure Vyvod(s:string;x,y,c:byte);{процедура вывода текста}
begin
clrscr;{очистка экрана}
gotoXY(x,y);{устанавливаем курсор в указанную позицию}
TextColor(c);{устанавливаем цвет}
write(s);{выводим строку}
end;
var st:string;
x,y:byte;
sm:char;
begin
clrscr;
Textbackground(0);{для черного экрана, на Ваше усмотрение}
Textcolor(15);{белый цвет}
write('Vvedite text:');
readln(st);
repeat
writeln('Vvedite koordinaty texta:');
readln(x,y);
until (x>0)and(x<=80-length(st))and(y>0)and(y<=25);{проверим чтобы текст вошел на экран}
write('Upravlenie dopolnitelnymi klavishami 1-4,6-9, vyhod Enter');{пояснение}
readln;
clrscr;{убираем все надписи}
repeat {повторяем пока не нажата Enter}
if keypressed then{если нажата клавиша}
begin
sm:=readkey;{читаем ее код}
case sm of
#49:if (x>1)and(y<=24) then{1-вниз и влево пока не упремся в стенку}
begin
x:=x-1;
y:=y+1;
Vyvod(st,x,y,15);
end;
#50:if(y<=24) then{2-вниз}
begin
y:=y+1;
Vyvod(st,x,y,14);
end;
#51:if(x<=(79-length(st)))and(y<=24) then{3-вправо+вниз}
begin
x:=x+1;
y:=y+1;
Vyvod(st,x,y,12);
end;
#52:if (x>1) then{4-влево}
begin
x:=x-1;
Vyvod(st,x,y,11);
end;
#54:if (x<=79-length(st)) then{6-вправо}
begin
x:=x+1;
Vyvod(st,x,y,10);
end;
#55:if (x>1)and(y>1) then{7-влево+вверх}
begin
x:=x-1;
y:=y-1;
Vyvod(st,x,y,9);
end;
#56:if (y>1) then{8-вверх}
begin
y:=y-1;
Vyvod(st,x,y,7);
end;
#57:if (x<=(79-length(st)))and(y>1) then{9-вправо+вверх}
begin
x:=x+1;
y:=y-1;
Vyvod(st,x,y,3);
end;
end;
end;
until sm=#13;{Enter-выход}
end.
Форма ответа