• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

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

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Программа с завязкой на стрелки клавиатуры

Svetlanka

Новые
Регистрация
15 Ноя 2010
Сообщения
34
Реакции
0
Баллы
0
Программа с завязкой на стрелки клавиатуры

Разработать программу, которая при нажатии клавиши <F9> выводит на экран текстовое окно. При нажатии клавиши <←> сдвигается влево левая рамка окна, при нажатии <→> вправо правая рамка окна, при нажатии <↓> вниз нижняя рамка окна, при нажатии <↑> вверх верхняя рамка окна.
 
Какой язык программирования?
 
Будем считать, что ЯП - Pascal :). Решение может быть следующим:
Код:
uses crt;
var x1,y1,x2,y2,k:integer;
    c:char;
    flag:boolean;
begin
TextBackground(black);
clrscr;
TextBackground(blue);
x1:=30;
y1:=10;
x2:=50;
y2:=13;
window(x1,y1,x2,y2); {определяем окно с начальными координатами}
clrscr; {инициализируем текстовое окно с очисткой экрана}
flag:=false;
repeat {цикл изменения размеров}
c:=readkey;
if c=chr(0) then c:=readkey; {игнорируем управляющий символ}
k:=ord(c); {определяем код введенного символа}
if k=67 then flag:=true; {нажатие клавиши F9}
if flag then begin
case k of
72: if y1>1 then y1:=y1-1 else y1:=1; {стрелка вверх}
80: if y2<25 then y2:=y2+1 else y2:=25; {стрелка вниз}
75: if x1>1 then x1:=x1-1 else x1:=1; {стрелка влево}
77: if x2<80 then x2:=x2+1 else x2:=80; {стрелка вправо}
end;
window(x1,y1,x2,y2); {определяем окно с текущими координатами}
TextBackground(blue); {определяем цвет фона}
clrscr; {инициализируем текстовое окно с очисткой экрана}
writeln('Test text Test text Test text'); {выводим контрольную фразу в новое текстовое окно}
end;
until c=chr(13); {отрабатываем нажатие Enter}
end.
Сначала инициализируем текстовый режим и заливаем фон черным цветом. потом задаем начальные координаты окна вывода и рисуем его синим цветом. Далее заводим цикл для управления размерами окна. Выход из цикла с последующим завершением программы - по нажатию Enter. Отрабатываются также нажатия клавиш управления курсором и F9. При нажатии стрелки изменяется соответствующая координата, предусмотрено ограничение на изменение координаты, чтобы не вызвать зависания.
 
Спасибо, все верно. только почему при нажатии левой стрелки рамка сдвигается вправо, а при нажатии правой влево??
 
Не знаю, как у вас, но у меня все нормально работает. Попробуйте на своем компьютере в листинге 75 и 77 код местами поменять.
 
поменяла. теперь все как надо.!
 
Рад за вас!
 
Назад
Сверху