Как получить более одного ввода с клавиатуры одновременно в Small Basic

Я думал, что это сработает, но не

GraphicsWindow.KeyDown = KeyDown

Sub KeyDown
   If GraphicsWindow.LastKey = "W" And GraphicsWindow.LastKey = "Space" Then
      Do Stuff
   EndIf
EndSub

Мне нужно решение этой проблемы, чтобы я мог одновременно получать от пользователя более одного ввода с клавиатуры.


person Auxhil    schedule 23.02.2016    source источник


Ответы (1)


Ну вот! Это должно делать то, что вам нужно!

GraphicsWindow.KeyDown = KeyDown
GraphicsWindow.KeyUp = KeyUp

While 1 = 1
Program.Delay(10)
If Key["Space"] = "True" And Key["Up"] Then
 TextWindow.WriteLine("DOING STUFF!")
EndIf
EndWhile


Sub Keydown
LastKeyDown = GraphicsWindow.LastKey
Key[LastKeyDown] = "True"
EndSub

Sub KeyUp
LastKeyUp = GraphicsWindow.LastKey
Key[LastKeyUp] = "False"
EndSub
person Zock77    schedule 24.02.2016
comment
правильно, но это не всегда будет пробел и вверх, что произойдет, если он захочет, чтобы это было с любой клавишей? - person Matthew; 24.02.2016
comment
Довольно просто, просто замените ключ внутри кавычек на то, что вам нужно: Key[W] или Key[Control] - person Zock77; 25.02.2016
comment
эмм, верно, но скажем, в вашей игре в стиле GTA с видом сверху - у вас также есть диаганали, что составляет 4 хода (движение плоскости Кортезиана) и 4 диаганолы, поэтому вам нужно будет иметь 8, если утверждения верны? есть ли способ сделать его более эффективным? и как бы вы просто отлаживали это (просто удивляюсь, потому что я много отлаживаю?) - person Matthew; 26.02.2016