Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 06.12.2008, 11:35   #1
viper86
Нуждающийся
 
Аватар для viper86
 
Регистрация: 19.11.2008
Адрес: Украина, Луганск
Сообщений: 72
Написано 34 полезных сообщений
(для 123 пользователей)
Комбинация клавиш

Всем привет! Подскажите пожайлуста, как можно в блитце задавать комбинации клавиш? Например вперед, впред+пробел или А, A+D, S. То есть как в файтингах. Заранее спасибо.

Последний раз редактировалось viper86, 06.12.2008 в 12:02.
(Offline)
 
Ответить с цитированием
Старый 06.12.2008, 21:13   #2
FrankH
Разработчик
 
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений
(для 122 пользователей)
Ответ: Комбинация клавиш

If KeyDown(KEYFWD1) And KeyDown(KEYDWN1) Then...
(Offline)
 
Ответить с цитированием
Старый 08.12.2008, 10:17   #3
viper86
Нуждающийся
 
Аватар для viper86
 
Регистрация: 19.11.2008
Адрес: Украина, Луганск
Сообщений: 72
Написано 34 полезных сообщений
(для 123 пользователей)
Ответ: Комбинация клавиш

Нет, не просто 2 клавиши вместе, а последовательность, например для удара ножницами игрок нажмёт вперёд, а потом вперёд+А.
(Offline)
 
Ответить с цитированием
Старый 08.12.2008, 11:30   #4
Spiderman
Знающий
 
Аватар для Spiderman
 
Регистрация: 28.07.2008
Адрес: Киев
Сообщений: 228
Написано 61 полезных сообщений
(для 191 пользователей)
Ответ: Комбинация клавиш

Необходимо запоминать ASCII код нескольких последних нажатых клавиш и выполнять проверку в цикле

Пример
if (key(0)=57 and key(1)=31 and key(2)=33) then...

где key() массив для нажатых клавиш
__________________
Тяжела жизнь программиста: радость находки своего бага всегда омрачает осознание собственной тупости...
(Offline)
 
Ответить с цитированием
Старый 08.12.2008, 12:03   #5
viper86
Нуждающийся
 
Аватар для viper86
 
Регистрация: 19.11.2008
Адрес: Украина, Луганск
Сообщений: 72
Написано 34 полезных сообщений
(для 123 пользователей)
Ответ: Комбинация клавиш

Сообщение от Spiderman Посмотреть сообщение
Необходимо запоминать ASCII код нескольких последних нажатых клавиш и выполнять проверку в цикле

Пример
if (key(0)=57 and key(1)=31 and key(2)=33) then...

где key() массив для нажатых клавиш
Спасибо огромное, то что нужно )))))
(Offline)
 
Ответить с цитированием
Старый 08.12.2008, 14:08   #6
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Комбинация клавиш

Я бы сделал немного иначе. А именно, есть стандартные клавиши, к примеру Лево, Вверх, Вправо, Вниз, А, Б.
Далее, сделал бы маленький скриптик, где прописанны какие нада клавиши и т.п.
Затем список (правдо это на БМ просто, на б3д, массивом можно).
Далее что вносится в список, изначально все приёмы, производя некое действие, все приёмы где позиция(к примеру первое действие в приёме) и действие не совпадает, то удаляем из списка указатель на приём. Остаются естественно те которые возможны в реализации, далее если не истекло время, и сделано следующее действие, запускаем опять этот же процесс, уже проверяя на второе действие, и опять же отсекаем всё остальное.
Но тут возникает в драках 2 моммента, первое, это какраз приёмы быстрые, либо это серия ударов, это 2 разницы, т.к. приёмы быстрые, могут быть максимум из 3 последовательных действий, такой приём всегда начинается с направлений (движений), и заканчивается уже на кнопки ударов. Нужно это учитывать.
А также есть моммент такой, что приёмы идут как серия ударов, поэтому нужно также продумывать их, дабы они правильно пересикались и небыли с одинаковыми началами, но разными приёмами..
Короче говоря, применение действий уже будет происходить сразу по началу выполнения комбинации (если это не быстрый приём).
Да и использовать в данном случае And, Or и сами прямые функции получения нажатия\зажатия кнопок, я настоятельно не рекомендую. Тут как никогда, нужно изначально привязывать всё к переменным, и использовать затем их, либо как обычно будут баги и т.п. с инпутом, которые в подобных ситуациях частенько всплывают, сбивая с толку.
(Offline)
 
Ответить с цитированием
Старый 08.12.2008, 15:37   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Комбинация клавиш

Сообщение от Spiderman Посмотреть сообщение
Необходимо запоминать ASCII код нескольких последних нажатых клавиш и выполнять проверку в цикле
достаточно (и более удобно) scan-кодов
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 08.12.2008, 17:35   #8
viper86
Нуждающийся
 
Аватар для viper86
 
Регистрация: 19.11.2008
Адрес: Украина, Луганск
Сообщений: 72
Написано 34 полезных сообщений
(для 123 пользователей)
Ответ: Комбинация клавиш

2MoKa Спасибо, твой способ обдумаю. Пока использую такой код (просто для понятия принципа)

If KeyHit(RP) And AnimSeq(player)=stoyka
Animate (player,3,1.3,punch1,transition)
combo1=1
combo1_time=MilliSecs()
EndIf

If combo1=1 And MilliSecs()-combo1_time<300 And KeyDown(RS) And Keyhit(RP) Then combo1=2
If combo1=2 And AnimTime(player)>25 combo1=0 Animate(player,3,0.5,punch2,transition)
If MilliSecs()-combo1_time>600 Then combo1=0,

где RP(Right Punch)=76 - кнопка Num5,
и RS(Right Step)=32 - кнопка D.

То есть, при нажатии клавиши RP идёт удар рукой(punch1) и если после неё в течении 300 мс нажато RS+RP идёт сильный удар с выпадом(punch2). Но вот в чём беда, второе событие KeyHit(RP) не срабатывает, а если вместо него написать keyDown:

If combo1=1 And MilliSecs()-combo1_time<300 And KeyDown(RS) And KeyDown(RP) Then combo1=2,

то комбо срабатывает сразу при нажатии RS+RP(combo1 сразу становится равное 2).

У кого то есть соображения на этот счёт?
(Offline)
 
Ответить с цитированием
Старый 08.12.2008, 17:45   #9
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Комбинация клавиш

Тут как никогда, нужно изначально привязывать всё к переменным, и использовать затем их, либо как обычно будут баги и т.п. с инпутом, которые в подобных ситуациях частенько всплывают, сбивая с толку.
Повторюсь..
(Offline)
 
Ответить с цитированием
Старый 08.12.2008, 18:10   #10
viper86
Нуждающийся
 
Аватар для viper86
 
Регистрация: 19.11.2008
Адрес: Украина, Луганск
Сообщений: 72
Написано 34 полезных сообщений
(для 123 пользователей)
Ответ: Комбинация клавиш

Сообщение от MoKa Посмотреть сообщение
Повторюсь..
А можешь пример хоть небольшой написать (или мой изменить), а то я не совсем понимаю, что ты имеешь ввиду.
(Offline)
 
Ответить с цитированием
Старый 08.12.2008, 18:35   #11
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Комбинация клавиш

viper86, нелюблю хлебом кормить, а когда ленятся - нужно отсекать..
IKhA=KeyHit(..)
(Offline)
 
Ответить с цитированием
Старый 08.12.2008, 22:54   #12
FrankH
Разработчик
 
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений
(для 122 пользователей)
Ответ: Комбинация клавиш

Хм, не судите строго, но первое что пришло в голову: создаем эталоны типа
(код клавиши_1),(допуск времени до след. нажатия_1),(код клавиши_2),(допуск времени до след. нажатия_2)...
и помещаем их в массивы, далее создаем кеш(например типом, но может и массив покатит) и заносим туда каждое нажатие со сдвигом, после каждого сдвига сверяем с эталонами. Задержки можно поставить и константой если для джойстика. Ток насколько тормозно выйдет на Блитце незнаю..
(Offline)
 
Ответить с цитированием
Старый 09.12.2008, 09:49   #13
viper86
Нуждающийся
 
Аватар для viper86
 
Регистрация: 19.11.2008
Адрес: Украина, Луганск
Сообщений: 72
Написано 34 полезных сообщений
(для 123 пользователей)
Ответ: Комбинация клавиш

Сообщение от MoKa Посмотреть сообщение
viper86, нелюблю хлебом кормить, а когда ленятся - нужно отсекать..
IKhA=KeyHit(..)
Спасибо, мне этого достаточно (я и сам люблю разбиратся). Я первый раз за помощью на форумы обратился, может кто подобное уже делал и знает, как это делать лучше. А так всё сам )))) (по хелпам и примерам естесно).

А вообще, большое спасибо всем, что помогаете. Я читаю много форумов про блиц, этот самый хороший.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо viper86 за это полезное сообщение:
impersonalis (09.12.2008), moka (09.12.2008)
Старый 09.12.2008, 14:36   #14
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Комбинация клавиш

viper86, респект тебе за то что реально сам учишся - это лучший метод!
Задавай ещё вопросы, такие как этот, потому что если честно этот вопрос интерестен тем что он не глупый, и имеет несколько реализаций.
Драки пишешь?
(Offline)
 
Ответить с цитированием
Старый 10.12.2008, 13:15   #15
viper86
Нуждающийся
 
Аватар для viper86
 
Регистрация: 19.11.2008
Адрес: Украина, Луганск
Сообщений: 72
Написано 34 полезных сообщений
(для 123 пользователей)
Ответ: Комбинация клавиш

Сообщение от MoKa Посмотреть сообщение
viper86, респект тебе за то что реально сам учишся - это лучший метод!
Задавай ещё вопросы, такие как этот, потому что если честно этот вопрос интерестен тем что он не глупый, и имеет несколько реализаций.
Драки пишешь?
Да, хочу написать драки типа Tekken. Но для начала пишу простенькую игру, где играешь человечком типа палочка-палочка-шарик (видео прикрепил), а против тебя куча противников. Игра на прохождение, немного рпг элементов (открытие ударов, увеличение здоровья и тд). Сразу писать нормальный файтинг не решился, сначала на маленьком поучусь )))))
Вложения
Тип файла: zip capsule-man.zip (68.9 Кб, 451 просмотров)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как решить проблемы с обработкой клавиш? integra Основной форум 1 28.11.2009 13:15
отслежывание нажатий клавиш beZ_probleM Основной форум 7 20.10.2008 01:17
Обработка нажатий клавиш Phantom Программирование 4 24.08.2008 23:02
Отлов нажатий клавиш SkyFox Основной форум 2 27.06.2008 09:42
Реализация переназначения клавиш Fant 2D-программирование 12 19.05.2006 21:49


Часовой пояс GMT +4, время: 13:31.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com