所以我正在努力开发一个平台风格的游戏,用 C 语言编写并使用 GTK 作为我的图形工具包。现在我有一个程序可以在屏幕上放置三个块。其中两个是平台,第三个可以通过按左/右箭头键横向移动。(我还没有绘制任何精灵,所以现在我的游戏的英雄是一个蓝色矩形)。我还实现了按“z”键跳跃,你可以在平台上跳跃和降落。
然而,在跳跃时横向移动是相当困难的。我相信这是因为我的程序无法识别同时按下的两个键,因此您必须释放左箭头或右箭头,按 z,然后释放 z 并再次按右箭头或左箭头以在空中横向移动。我希望能够按住左或右并同时按 z 让英雄横向跳跃。
GDK 参考手册为您提供 GDK 密钥代码列表的“gdk/gdkkeysyms.h”(在我的系统上位于 /usr/include/gtk-3.0/gdk/gdkkeysyms.h),但没有给出任何同时使用两个键的指导。GTK/GDK 能否识别同时按下两个键的事件(GDK、GTK,无论哪一个,我都不清楚两者之间的界限在哪里,但我想这是另一个问题的主题......)?你会如何应用它?(对于单个键,您可以通过执行类似的操作来获取代码
key = event->keyval;
但我真的不知道这对于两个键会是什么样子)。
谢谢你的帮助!