forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   BlitzMax (http://forum.boolean.name/forumdisplay.php?f=104)
-   -   BlitzMax- цикл с ожиданием нажатия любой клавиши (http://forum.boolean.name/showthread.php?t=20437)

edgemza 13.10.2016 10:43

BlitzMax- цикл с ожиданием нажатия любой клавиши
 
Привет!
Столкнулся с проблемой:
нужно организовать цикл, который бы "крутился" и выполнял нужные действия пока не будет нажата любая клавиша.
repeat
<необходимые действия>
until <нажата ли любая клавиша>

keydown - я так понял используется только с константами нужной клавиши
KeyDown(key_escape)

keywait - просто ждет нажатие любой клавиши

а как сделать в моём случае?

Жека 13.10.2016 10:54

Ответ: BlitzMax- цикл с ожиданием нажатия любой клавиши
 
Примерно так (всевдокод)
PHP код:

repeat 
  
<необходимые действия>
  
local pressed false
  
for 0 until 255
    
if keyhit(k)
      
pressed true
      
exit
    endif
  
next
until pressed 


edgemza 13.10.2016 11:42

Ответ: BlitzMax- цикл с ожиданием нажатия любой клавиши
 
Ох...ох!!!
Пока я "ковырял" инструкции и примеры в поиске решения вопроса, я встречал такой вариант решения вопроса, но и там были комментарии, что это не рационально "гонять" цикл 255 раз...
Неужели больше выходов нет? Неужели те же функции KeyDown, KeyHit не имеют возможности проверки не на конкретную клавишу, а просто на нажатие любой?

Arton 13.10.2016 12:33

Ответ: BlitzMax- цикл с ожиданием нажатия любой клавиши
 
Ответ кроется в твоём вопросе, нужно создавать цикл.
Рациональность зависит только от реализации.
Можно написать код в котором будет крутится множество проверок. А можно написать пару проверок. Почувствуй разницу.


Цитата:

Сообщение от edgemza (Сообщение 309200)
Неужели те же функции KeyDown, KeyHit не имеют возможности проверки не на конкретную клавишу, а просто на нажатие любой?

WaitKey()
Это в любом случае означает «крутить цикл».

edgemza 13.10.2016 14:01

Ответ: BlitzMax- цикл с ожиданием нажатия любой клавиши
 
Мда,,, последний ответ - НИ О ЧЕМ........

mingw 13.10.2016 18:54

Ответ: BlitzMax- цикл с ожиданием нажатия любой клавиши
 
Можно так...
Код:

Repeat
    Что-то делаем...
Until (PollEvent() = EVENT_KEYDOWN)

Приложение должно быть оконным, ибо эвенты для того и существуют, что бы на их основе строить GUI. Эвенты в БМаксе по сути ретранслируют события окна ОС.

edgemza 14.10.2016 13:26

Ответ: BlitzMax- цикл с ожиданием нажатия любой клавиши
 
Спасибо! Это как вариант для "окошек", но у меня полноэкранный... Так что не подходит.

mingw 14.10.2016 15:54

Ответ: BlitzMax- цикл с ожиданием нажатия любой клавиши
 
Цитата:

Сообщение от edgemza (Сообщение 309234)
Спасибо! Это как вариант для "окошек", но у меня полноэкранный... Так что не подходит.

А в чем отличие оконного приложения от полноэкранного?

Этот метод не подойдет для консольных приложений.


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

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