Так что я пытаюсь работать над разработкой платформенной игры, пишу на C и использую GTK в качестве своего графического инструментария. Сейчас у меня есть программа, которая размещает на экране три блока. Две из них являются платформами, а третью можно перемещать в стороны, нажимая клавиши со стрелками влево/вправо. (Я еще не рисовал спрайты, поэтому сейчас герой моей игры — синий прямоугольник). Я также реализовал прыжки по нажатию клавиши «z», и вы можете прыгать и приземляться на платформы.
Однако двигаться вбок во время прыжка довольно сложно. Я полагаю, это потому, что моя программа не распознает две клавиши, нажатые одновременно, поэтому вам нужно отпустить стрелку влево или вправо, нажать z, а затем отпустить z и снова нажать стрелку вправо или влево, чтобы двигаться вбок в воздухе. Я хотел бы иметь возможность удерживать влево или вправо и одновременно нажимать z, чтобы герой прыгал вбок.
справочное руководство по GDK отсылает вас к 'gdk/gdkkeysyms .h' (который в моей системе находится в /usr/include/gtk-3.0/gdk/gdkkeysyms.h) для списка кодов ключей GDK, но не дает никаких указаний по использованию двух ключей одновременно. Может ли GTK/GDK распознавать событие, когда две клавиши нажимаются одновременно (GDK, GTK, в зависимости от того, где проходит граница между ними, но я полагаю, что это тема для другого вопроса...)? Как бы вы его применили? (Для одного ключа вы получите код, выполнив что-то вроде
key = event->keyval;
но я действительно не знаю, как это будет выглядеть для двух ключей).
Спасибо за вашу помощь!