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 но ничего не происходить.


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

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