Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 22.11.2010, 00:17   #1 (permalink)
Svetlanka
Member
 
Регистрация: 15.11.2010
Сообщений: 34
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Программа с завязкой на стрелки клавиатуры

Разработать программу, которая при нажатии клавиши <F9> выводит на экран текстовое окно. При нажатии клавиши <←> сдвигается влево левая рамка окна, при нажатии <→> вправо правая рамка окна, при нажатии <↓> вниз нижняя рамка окна, при нажатии <↑> вверх верхняя рамка окна.
Svetlanka вне форума   Ответить с цитированием

Старый 22.11.2010, 00:17
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Пока участники форума думают над вашей проблемой, обратите внимание на это

Подсветка клавиатуры
Светомузыка из клавиатуры
Переводим стрелки
Красные стрелки в uTorrent
Перепрограммирование клавиатуры
Управление курсором мыши с клавиатуры. Распределение на две клавиатуры.

Старый 22.11.2010, 11:33   #2 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Какой язык программирования?
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 22.11.2010, 13:29   #3 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Будем считать, что ЯП - 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. При нажатии стрелки изменяется соответствующая координата, предусмотрено ограничение на изменение координаты, чтобы не вызвать зависания.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 23.11.2010, 20:44   #4 (permalink)
Svetlanka
Member
 
Регистрация: 15.11.2010
Сообщений: 34
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо, все верно. только почему при нажатии левой стрелки рамка сдвигается вправо, а при нажатии правой влево??
Svetlanka вне форума   Ответить с цитированием
Старый 24.11.2010, 13:59   #5 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Не знаю, как у вас, но у меня все нормально работает. Попробуйте на своем компьютере в листинге 75 и 77 код местами поменять.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 24.11.2010, 19:00   #6 (permalink)
Svetlanka
Member
 
Регистрация: 15.11.2010
Сообщений: 34
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

поменяла. теперь все как надо.!
Svetlanka вне форума   Ответить с цитированием
Старый 24.11.2010, 19:03   #7 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Рад за вас!
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 16:30.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.