Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2009, 16:20   #1
Xcopy
Форумчанин
 
Аватар для Xcopy
 
Регистрация: 03.02.2009
Сообщений: 126
По умолчанию Нажата ли клавиша...

Вообщем я хочу написать игрушку, и для этого необходимо проверить:
Если нажата клавиша "стрелка вверх" то делать тото..., 1 словом неважно, важно то откуда я узнаю нажата ли стрелка вверх (может у нее есть код и все такое)... 1 словом я хотел бы таблицу кодов клавиш которую понимает паскаль.
Xcopy вне форума Ответить с цитированием
Старый 25.03.2009, 16:23   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Используйте keypressed. Возвращает true, если в буфере есть код клавиши. Пример:
Код:
if keypressed then
 begin
 c := readkey;
 { -- дальше обработка клавиши (код - в c) -- }
 end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.03.2009, 16:39   #3
Xcopy
Форумчанин
 
Аватар для Xcopy
 
Регистрация: 03.02.2009
Сообщений: 126
По умолчанию

А как типо если нажата стрелка вверх?
Xcopy вне форума Ответить с цитированием
Старый 25.03.2009, 16:46   #4
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

Цитата:
Левая стрелка - 75, Правая стрелка - 77, Стрелка вверх - 72, Стрелка вниз - 80.
У меня или дежа вю или это точно уже было!!
правда там вроде сначала #0 а потом #72
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 25.03.2009, 16:47   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
А как типо если нажата стрелка вверх?
Сравнивать коды. Код стрелки вверх = 72.
Пример.

Код:
uses crt;
var c : char;

begin
clrscr;
repeat
if keypressed then
 begin
 c := readkey;
 if c=#72 then
  writeln('Nazhata strelka vverh');
 end;
until c=#27;

end.
Цитата:
у меня или дежа вю или это точно уже было!!
И не один раз )
Цитата:
правда там вроде сначала #0 а потом #72
Если показать код нажатой стрелки, то действительно будет 0 и 72.
Но при сравнении нужно использовать только 72.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.03.2009, 16:51   #6
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

Лучше отличать #0, X от просто X, потому что это вполне обычные буквы H, K, M, P
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Старый 25.03.2009, 16:57   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Лучше отличать #0, X от просто X, потому что это вполне обычные буквы H, K, M, P
Да, действительно ) Как-то раньше не обращал внимания..
Тогда пример будет выглядеть так:

Код:
uses crt;
var c : char;
begin
clrscr;
repeat
if keypressed then
 begin
 c := readkey;
 if (c=#0) then
  begin
   c:=readkey;
   if c=#72 then writeln('Nazhata strelka vverh');
  end;
 end;

until c=#27;

end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.03.2009, 17:01   #8
Iceman
Форумчанин
 
Регистрация: 08.07.2007
Сообщений: 154
По умолчанию

Все кнопки можно легко проверить:

var c:char;
begin
c:= readkey;
writeln(ord(c));
readln;
end;
Iceman вне форума Ответить с цитированием
Старый 25.03.2009, 17:03   #9
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

uses crt; забыли

Все управляющие клавиши выдадут Вам 0
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 25.03.2009, 17:49   #10
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

Цитата:
Сообщение от alex_fcsm Посмотреть сообщение
uses crt; забыли

Все управляющие клавиши выдадут Вам 0
А сразу следующий за ним символ (ещё один readkey) — зависит от клавиши.
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает клавиша ENTER в TWebBrowser kontora Компоненты Delphi 4 27.11.2009 12:22
Как с помощье ReadKey определить что нажата клавиша "Стрелка" Викдон Паскаль, Turbo Pascal, PascalABC.NET 5 05.02.2009 00:47
клавиша delete andrey4623 Общие вопросы Delphi 6 17.01.2008 18:16
как отследить нажатие клавиши Delete D-fens Общие вопросы Delphi 4 07.06.2007 23:58
нажата ли кнопка мыши? VDLab Общие вопросы Delphi 2 15.11.2006 00:59