Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > 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,125
Репутация: 3316

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,585
Репутация: 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,125
Репутация: 3316

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
Сообщений: 47
Репутация: 130
По умолчанию

Через массив нажатых клавиш и 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


04:31.


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

RusProfile.ru


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