forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   Вопрос по клавишам (http://forum.boolean.name/showthread.php?t=14745)

Clip 16.05.2011 14:29

Вопрос по клавишам
 
Можно ли сделать вот так?
if Keyhit(200) after KeyDown(200) then moveEntity c,0,0,3
Прост ошибку выдает :)

maxturbo 16.05.2011 14:33

Ответ: Вопрос по клавишам
 
Ммм это что???
Зачем ты туда after воткнул?? :)
И в чем смысл KeyHit(200) потом KeyDown(200) ???
Что сделать то хочешь???
А так конечно ошибка будет ;)

Clip 16.05.2011 14:36

Ответ: Вопрос по клавишам
 
Ну смотри. Если я нажал клавишу вверх, то обьект будет двигатся со скоростью 1.
Мне нужно что бы 1 раз нажал и на 2 раз уже зажимаешь кнопку то он двигался со скоростью 3.

maxturbo 16.05.2011 14:46

Ответ: Вопрос по клавишам
 
Цитата:

Сообщение от Clip (Сообщение 188642)
Ну смотри. Если я нажал клавишу вверх, то обьект будет двигатся со скоростью 1.
Мне нужно что бы 1 раз нажал и на 2 раз уже зажимаешь кнопку то он двигался со скоростью 3.

Что то я тебя опять понять не могу :)
KeyDown() Будет выполнять действие пока клавиша зажата
KeyHit() Будет выполнять один раз действие при нажатие клавиши
Тебе надо как???
Ты нажимаешь KeyDown() объект двигается со скоростью к примеру 1, последующие нажатие клавиши чтоб скорость постепенно увеличивалась или как??? Или чтоб она при зажатой клавише прибавлялась???

Clip 16.05.2011 14:58

Ответ: Вопрос по клавишам
 
нужно: 1 раз нажал - ничего не произошло.
2 раза нажал он двигается со скоростью 3(на 2 раз зажимаю)

St_AnGer 16.05.2011 15:01

Ответ: Вопрос по клавишам
 
делаешь переменную которая считает количество нажатий нужной тебе клавиши.

что то наподобие этого:

Код:

If KeyHit(200) then
    key_up = key_up + 1
    if key_up > 2 then key_up = 1
end if

if KeyDown(200)
    if key_up = 1
        moveentity cub, 0, 0, 1
    else
        moveentity cub, 0, 0, 3
    end if
end if

упд: варианты другие ещё полюбому должны быть. Этот первый в голову пришёл (он чреват кучей условий, как следствие - невысокая скорость работы при таком употреблении if'ов (ну, где нибудь в будущем :) )).

maxturbo 16.05.2011 15:15

Ответ: Вопрос по клавишам
 
Думаю понятно будет )
Код:

        If KeyHit(200)
                key=key+1
        EndIf
        If KeyDown(200) And key=2 Then MoveEntity cub,0,0,3
        If KeyDown(200) And key=4 Then MoveEntity cub,0,0,6
        If KeyDown(200) And key=6 Then MoveEntity cub,0,0,9

Хотя выше уже ответили ))
Переменная key считает сколько раз нажал клавишу далее смотрим если зажата клавиши вверх и key = своему значению, то двигаем объект...

Gector 16.05.2011 15:54

Ответ: Вопрос по клавишам
 
Люди! Вы что?!:4to:
After используется только для типов он никаким боком с клавишами не связан.

maxturbo 16.05.2011 15:58

Ответ: Вопрос по клавишам
 
Цитата:

Сообщение от Gector (Сообщение 188648)
Люди! Вы что?!:4to:
After используется только для типов он никаким боком с клавишами не связан.

А где ты увидел чтоб я или St_AnGer его приписали :)
Это создатель вопроса его воткнул туда ))) Ну так как он видать только начинающий, в подробности что и для чего After предназначен я объяснять не стал :)

Gector 16.05.2011 16:06

Ответ: Вопрос по клавишам
 
Цитата:

Сообщение от maxturbo (Сообщение 188649)
А где ты увидел чтоб я или St_AnGer его приписали :)
Это создатель вопроса его воткнул туда ))) Ну так как он видать только начинающий, в подробности что и для чего After предназначен я объяснять не стал :)

Просто это довольно грубая ошибка). А автору никто не сказал что он натворил).

Clip 16.05.2011 17:08

Ответ: Вопрос по клавишам
 
Я увидел в хелпе эту команду. и подумал может быть её мжно будет исп. =)

maxturbo 16.05.2011 19:07

Ответ: Вопрос по клавишам
 
Цитата:

Сообщение от Clip (Сообщение 188651)
Я увидел в хелпе эту команду. и подумал может быть её мжно будет исп. =)

Ну, а что же внимательней не почитал то ;)

LLI.T.A.L.K.E.R. 17.05.2011 10:37

Ответ: Вопрос по клавишам
 
Цитата:

Сообщение от maxturbo (Сообщение 188647)
Думаю понятно будет )
Код:

        If KeyHit(200)
                key=key+1
        EndIf
        If KeyDown(200) And key=2 Then MoveEntity cub,0,0,3
        If KeyDown(200) And key=4 Then MoveEntity cub,0,0,6
        If KeyDown(200) And key=6 Then MoveEntity cub,0,0,9

Хотя выше уже ответили ))
Переменная key считает сколько раз нажал клавишу далее смотрим если зажата клавиши вверх и key = своему значению, то двигаем объект...

Переменную key когда-то следует обнулить..

Через 40 мксек. (кадров) повторное нажатие отменяется.

Код:

If KeyHit(200)
        If key=0 Then key_time=0
        key=key+1
        key_speed=key
EndIf
If KeyDown(200) Then MoveEntity hero,0,0,key_speed*0.3

key_time=key_time+1

If key_time>40 Then
        key=0
        key_time=0
EndIf

Работоспособно на тройной разгон.
Примечание: скорость повторного нажатия 1 клавиши = 20 мксек.

maxturbo 17.05.2011 11:04

Ответ: Вопрос по клавишам
 
Цитата:

Сообщение от LLI.T.A.L.K.E.R. (Сообщение 188725)
Переменную key когда-то следует обнулить..

Через 40 мксек. (кадров) повторное нажатие отменяется.

Код:

If KeyHit(200)
        If key=0 Then key_time=0
        key=key+1
        key_speed=key
EndIf
If KeyDown(200) Then MoveEntity hero,0,0,key_speed*0.3

key_time=key_time+1

If key_time>40 Then
        key=0
        key_time=0
EndIf

Работоспособно на тройной разгон.
Примечание: скорость повторного нажатия 1 клавиши = 20 мксек.

Это понятно, что ее когда нибудь надо обнулить :)

Petrofan 06.06.2011 18:12

Ответ: Вопрос по клавишам
 
Так как здесь вопрос по клавишах хочу задать вопрос. Как определять цифровую клавиатуру та что с правой стороны клавиатуры? Я пробовал ставить код клавиши допустим "1"-79 но ничего не происходить.

Reks888 06.06.2011 18:52

Ответ: Вопрос по клавишам
 
Отлавливать Asc'ом код, ессно. Идея у тебя верная, наверное что-то не так в реализации.
Цитата:

While True
If KeyHit(79) Then End
Wend
У меня при нажатии единицы на нумпаде выходит

LLI.T.A.L.K.E.R. 06.06.2011 18:58

Ответ: Вопрос по клавишам
 
PHP код:

GetKey Example

Print "ЖМИ КНОПКУ !!!"

.rep
value
=""

While Not value
value
=GetKey()
If 
value="27" Then Goto quit
Wend

Print "Код ASCII нажатой клавиши:" value 

Goto rep

.quit 

Жаль у меня нет NumPada, может работает только при включённом NumLock?

ASCII это не то.

RegIon 07.06.2011 06:59

Ответ: Вопрос по клавишам
 
Цитата:

; GetKey Example

Print "ЖМИ КНОПКУ !!!"

.rep
value
=""

While Not value
value
=GetKey()
If
value="27" Then Goto quit
Wend

Print "Код ASCII нажатой клавиши:" + value

Goto rep

.quit
ошибка будет,так как геткей выводит инит,надо сравнивать так:
; GetKey Example

Print "ЖМИ КНОПКУ !!!"

.rep
value
=0

While Not value
value
=GetKey()
If
value=27 Then Goto quit
Wend

Print "Код ASCII нажатой клавиши:" + value

Goto rep

.quit

p.s лично у меня так только работала

Petrofan 07.06.2011 11:47

Ответ: Вопрос по клавишам
 
У меня вообще ни в одном из примеров не работает. может кто знает какой нить Инпут код для реализации отлавливания клавиш и запись их в переменную?

RegIon 07.06.2011 12:15

Ответ: Вопрос по клавишам
 
Код:

;пихаем в цикл и проверяем,всё работает
string_$=Chr(GetKey())
If string_$>"!";чтоб отсеять символ нечитабельный
String__$=String__$+string_$
 EndIf
Text x,y, String__$;чтоб видно было

это 100 процентов работает.....

LLI.T.A.L.K.E.R. 09.06.2011 02:03

Ответ: Вопрос по клавишам
 
Цитата:

Сообщение от Костян (Сообщение 190532)
Код:

;пихаем в цикл и проверяем,всё работает
string_$=Chr(GetKey())
If string_$>"!";чтоб отсеять символ нечитабельный
String__$=String__$+string_$
 EndIf
Text x,y, String__$;чтоб видно было

это 100 процентов работает.....

Но не подходит для этого случая, так как выдаёт "имя" кнопки.

Требуемый код будет рабочим, если при нажатии на Esc даст символ 1, так как KeyHit(1) - нажатие на Esc

RegIon 09.06.2011 13:11

Ответ: Вопрос по клавишам
 
Цитата:

Требуемый код будет рабочим, если при нажатии на Esc даст символ 1, так как KeyHit(1) - нажатие на Esc
Код:

str(Getkey)--инит в текст переведёт...


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot