Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Возможно ли как-то перезапустить event

52K
01 октября 2009 года
shade_199
3 / / 01.10.2009
Есть идейка написать игру жанра платформер. И очень остро стала проблема управления. То есть бегать бегает, прыгать прыгает, а вот чтобы прыгнул и не пере нажимая клавишу он после прыжка дальше побежал. То есть как например в марио, бежал бежал нажал на прыжок и дальше побежал.

Это вообще реально осуществить на delphi?
1.9K
01 октября 2009 года
andriano
474 / / 10.01.2008
Это осуществимо на любом императивном языке программирования. В том числе и на Delphi.
Кто мешает запомнить предыдущее состояние и после окончания прыжка его восстановить? Либо просто сделать прыжок и бег ортогональными типами состояний?
Вариантов реализации - масса.
52K
01 октября 2009 года
shade_199
3 / / 01.10.2009
а можно в виде примера привести фрагмент кода реализующий этот момент?
288
01 октября 2009 года
nikitozz
1.2K / / 09.03.2007
Хоть модераторы и будут "пинать" за ответы в этой теме, не удержался.

Можно то конечно можно, вот только в том же Марио он бежит вперед после прыжка только потому, что вы продолжаете нажимать ->. Отпустите ее и во время прыжка и он также остановится.
52K
01 октября 2009 года
shade_199
3 / / 01.10.2009
Мне нужно чтобы он продолжал бежать после прыжка, у меня же он останавливается во все после прыжка, и надо перенажимать кнопку.
303
01 октября 2009 года
makbeth
1.0K / / 25.11.2004
Какие события нажатия клавиш обрабатываешь? Нужно ловить KeyUp/KeyPress/KeyDown в зависимости от действия примерно так: KeyDown:Бег -> Побежали -> KeyPress:Прыжок -> Прыгнули -> Побежали -> KeyUp:Бег -> Остановились.
Кроме того, необходимо помнить, что у драйвера клавиатуры есть ограничения на количество одновременно нажатых клавиш. Тут уж только курение DirectX поможет...
1.9K
02 октября 2009 года
andriano
474 / / 10.01.2008
Цитата: shade_199
а можно в виде примера привести фрагмент кода реализующий этот момент?



Код:
var MoveLeftPressed : boolean;
...
WM_TIMER: begin
  if MoveLeftPressed then
    inc(CurrentXposition, StepCoord);
end;
WM_KEYDOWN: case WParam of
  VK_LEFT:MoveLeftPressed := TRUE;
...
WM_KEYUP: case WParam of
  VL_LEFT:MoveLeftPressed := FALSE;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог