Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.
Внимание! Некоторое время письма не доходят до аккаунтов MAIL RU GROUP, не доходят на все почтовые ящики mail.ru, inbox.ru, bk.ru. Пишите им жалобы, чтобы быстрее восстановили получение писем, регистрируйтесь через яндекс почту и gmail, туда письма с активизацией доходят.

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

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

Ответ
 
Опции темы
Старый 21.09.2018, 22:12   #1
Roman_Jarckov23
Пользователь
 
Регистрация: 11.09.2018
Сообщений: 20
Репутация: 10
Вопрос Как сделать обработку сразу 2 клавиш?

Я делаю игру, мне нужно сделать обработку сразу 2-х клавиш, например:
нажимаешь стрелки влево и вверх он двигается в левый верхний угол. Как это можно сделать?
Roman_Jarckov23 вне форума   Ответить с цитированием
Старый 21.09.2018, 22:16   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,406
Репутация: 3353

icq: 512-765
skype: alexp.frl
По умолчанию

А одной как?
Alex11223 на форуме   Ответить с цитированием
Старый 21.09.2018, 22:20   #3
Roman_Jarckov23
Пользователь
 
Регистрация: 11.09.2018
Сообщений: 20
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А одной как?
Процедурой KeyDown:
Код:

 procedure KeyDown(key:integer);
   begin
   case key of 
   VK_Up: //Действия если нажата стрелка вверх
   VK_Down: //Действия если нажата стрелка вниз
   VK_Left:  //Действия если нажата стрелка влево
   VK_Right:  //Действия если нажата стрелка вправо
   end;

Roman_Jarckov23 вне форума   Ответить с цитированием
Старый 21.09.2018, 22:21   #4
Pavia
Лис
Профессионал
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 1,618
Репутация: 1708
По умолчанию

А паскаль какой?
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia на форуме   Ответить с цитированием
Старый 21.09.2018, 22:21   #5
Roman_Jarckov23
Пользователь
 
Регистрация: 11.09.2018
Сообщений: 20
Репутация: 10
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
А паскаль какой?
PASCALABC.NET
Roman_Jarckov23 вне форума   Ответить с цитированием
Старый 21.09.2018, 22:30   #6
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 17,406
Репутация: 3353

icq: 512-765
skype: alexp.frl
По умолчанию

А как вы нажмете одновременно влево и вверх? Все равно ж какая-то раньше нажмется, а потом вторая.

Ну а если зажать надолго, то наверно тоже как-нибудь по-очереди будут обе попадать в KeyDown.

Так что тут больше зависит от реализации самого движения.
Alex11223 на форуме   Ответить с цитированием
Старый 21.09.2018, 23:09   #7
Roman_Jarckov23
Пользователь
 
Регистрация: 11.09.2018
Сообщений: 20
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А как вы нажмете одновременно влево и вверх? Все равно ж какая-то раньше нажмется, а потом вторая.

Ну а если зажать надолго, то наверно тоже как-нибудь по-очереди будут обе попадать в KeyDown.

Так что тут больше зависит от реализации самого движения.
У меня всё через case, там только 1!
Roman_Jarckov23 вне форума   Ответить с цитированием
Старый 17.10.2018, 12:40   #8
jillitil
Форумчанин
 
Аватар для jillitil
 
Регистрация: 17.10.2018
Адрес: DS:SI
Сообщений: 81
Репутация: 149
По умолчанию

Через массив нажатых клавиш и IF а не CASE.

Цитата:
Const
kbUp = 72;
kbLeft = 75;
kbDown = 77;
kbRight = 78;

...
var
KeyDown[127] of boolean;
...
If KeyDown[kbUp] Then begin ... End;
If KeyDown[kbDown] Then begin ... End;
If KeyDown[kbLeft] Then begin ... End;
If KeyDown[kbRight] Then begin ... End;
...
jillitil вне форума   Ответить с цитированием
Ответ

Опции темы

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать обработку части двухмерного массива(паскаль) Андрей77777 Паскаль 2 25.11.2012 02:21
Скажи как сделать и получи сразу деньги на телефон X-treme Фриланс 5 12.07.2012 19:20
Как сделать, чтобы программа работала сразу через 20 сайтов? tima777 Работа с сетью в Delphi 4 13.08.2011 20:48
Как сделать сразу 2 такие автозамены: Mangost Microsoft Office Word 2 22.12.2010 09:41
Как сделать привязку глобальных горячих клавиш к свой проге? Jinxers Помощь студентам 1 08.02.2009 01:29


21:43.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru