1 / 1 / 0
Регистрация: 19.11.2015
Сообщений: 35
1

Обработка нажатия клавиш

20.11.2015, 02:34. Показов 1943. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа ниже по задумке после нажатия одной из клавиш совершать следующие действия: если при нажатая клавиша даёт символ А, Б, В или Г, то соответствующая буква должна появиться чуть ниже под заданием (с координатами надписи вроде как всё правильно), если же нажата клавиша с другим символом, то пишется надпись об ошибке; проблема состоит в том, что не пишется ничего из выше перечисленного

Не исключаю, что я чего-то недопонимаю в принципе работы readkey или другого; что же здесь не так? Что нужно изменить, не меняя в корне принцип работы программы?


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
program olympiad;
uses crt, graphABC;
var 
ans1: string;
key: integer;
resu: char;
color_background: color;
begin
Window.Title := 'Олимпиада';
SetWindowSize(1000, 400);
ClearWindow(color_background);
SetFontSize(45);
setfontcolor(clblack);
TextOut(5, 5, 'ВОПРОС №1');
SetFontSize(20);
TextOut(5, 70, 'Чему равен предел натурального логарифма числа е в тридцатой степени?');
TextOut(5, 110, 'А) 20');
TextOut(5, 140, 'Б) 25');
TextOut(5, 170, 'В) 28');
TextOut(5, 200, 'Г) 30');
{всё, что выше этой надписи, работает правильно, ниже начинаются проблемы}
resu:=readkey;
key:=ord(resu);
if (key=224) or (key=192) then TextOut(5, 260, 'А'); // коды символов "А" и "а"
if (key=225) or (key=193) then TextOut(5, 260, 'Б'); // коды символов "Б" и "б"
if (key=226) or (key=194) then TextOut(5, 260, 'В'); // коды символов "В" и "в"
if (key=227) or (key=195) then TextOut(5, 260, 'Г'); // коды символов "Г" и "г"
if (key<>224) and (key<>225) and (key<>226) and (key<>227) and (key<>192) and (key<>193) and (key<>194) and (key<>195) then begin
setfontcolor(clred);
TextOut(5, 230, 'Ответ введён некорректно!');
setfontcolor(clblack);
end;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.11.2015, 02:34
Ответы с готовыми решениями:

Обработка нажатия клавиш
Доброго кодинга, форумчане. Требуется процедурка, реагирующая только на удержание клавиши. Задача в...

Обработка нажатия клавиш
Ситуация такая: сломалась клавиатура(при нажатии пробела нажимается &quot;\ &quot; или &quot; &quot;, и некоторые...

Обработка одновременного нажатия двух клавиш
Доброго времени суток! Я пишу маленькую игру на PascalABC.Net. Мне нужно обрабатывать нажатие двух...

Создать обработку нажатия клавиш
Здравствуйте пишу курсач. Надо создать обработку нажатия клавиш. Сделал через OnKeyDown...

2
Почетный модератор
64291 / 47589 / 32740
Регистрация: 18.05.2008
Сообщений: 115,181
20.11.2015, 08:23 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
program olympiad;
uses graphABC;
procedure KeyPress(key:char);
begin
case key of
'А','а':TextOut(5, 260, 'А');
'Б','б':TextOut(5, 260, 'Б');
'В','в':TextOut(5, 260, 'В');
'Г','г':TextOut(5, 260, 'Г');
else begin
     setfontcolor(clred);
     TextOut(5, 230, 'Ответ введён некорректно!');
     setfontcolor(clblack);
     end;
end;
end;     
var  color_background:color;
begin
Window.Title := 'Олимпиада';
SetWindowSize(1000, 400);
CenterWindow;
color_background:=clYellow;
ClearWindow(color_background);
SetFontSize(45);
setfontcolor(clblack);
Setbrushstyle(bsClear);
TextOut(5, 5, 'ВОПРОС №1');
SetFontSize(20);
TextOut(5, 70, 'Чему равен предел натурального логарифма числа е в тридцатой степени?');
TextOut(5, 110, 'А) 20');
TextOut(5, 140, 'Б) 25');
TextOut(5, 170, 'В) 28');
TextOut(5, 200, 'Г) 30');
onkeypress:=KeyPress
end.
1
1 / 1 / 0
Регистрация: 19.11.2015
Сообщений: 35
20.11.2015, 18:43  [ТС] 3
Большое спасибо, это то, что мне было нужно, теперь я разобрался в обработке нажатия клавиш!
0
20.11.2015, 18:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2015, 18:43
Помогаю со студенческими работами здесь

Отлов нажатия комбинации клавиш
Здравствуйте, уважаемые форумчане! Хотелось бы спросить, как сделать так чтобы когда нажимаешь...

Как считывать нажатия клавиш клавиатуры?
Как считывать нажатия клавиш клавиатуры с активным окном программы с graphabc?

Эмуляция нажатия клавиш на клавиатуре в PascalABC.NET
Можете написать программу ,которая будут нажимать на Space (Пробел) с некоторым промежутком. Мне...

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

Обработка функциональных клавиш (F2)
Программа должна завершаться при нажатии F2, почему выводится лишний символ q uses crt; var ...

Обработка сочетания клавиш в graphabc
Я забыл название темы исправить, но это вопрос, мне нужно узнать, как это делать. Например...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru