- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近为我的 rougelike 从 SFML 切换到 libtcod,因为我发现 libtcod 对于这类游戏更方便。我找不到任何解决方案的一个问题是如何存储键盘绑定(bind)函数。
在 SFML 中,我可以为我的键函数做这个
std::map<sf::Keyboard::Key, std::function<void()>> keyboardCommands
在 libtcod 中有 TCOD_Key_t 结构(它将替换映射中的 sf::Keyboard::Key),它适用于 F 键、Esc 等特殊键。but "nothing" for letters.
有没有一种方法可以使用 libtcod 将我所有的键盘功能放在一个映射中?
最佳答案
免责声明:我从未使用过这个库!
我找到了 this :
Any other (printable) key :
TCODK_CHAR
所以当你收到 TCODK_CHAR
, 你找char c;
来自 this struct :
typedef struct {
TCOD_keycode_t vk;
char c;
unsigned pressed : 1;
unsigned lalt : 1;
unsigned lctrl : 1;
unsigned ralt : 1;
unsigned rctrl : 1;
unsigned shift : 1;
} TCOD_key_t;
我相信它会包含按下的字符。
更新
它是一个 C 库,因此预期用途可能类似于:( key
这里是 TCOD_key_t
类型)
switch(key.vk) {
case TCODK_UP : onUp(); break;
case TCODK_CHAR: onChar(key.c); break
default: break;
}
使用 map 你可以做这样的事情:
if(TCODK_CHAR == key.vk)
onChar(key.c);
else
specialCommands[key.vk]();
(其中 specialCommands
是std::map<TCOD_keycode_t, std::function<...> >
)
你可以输入 char
然而,如果 TCOD_keycode_t
的一些成员枚举将匹配字符代码,您将遇到键冲突(即,假设 TCODK_UP
的值为 65
,它将与字符 'a'
相同的键(ASCII 代码 65
))。
你也可以有另一个 map
或 array
将字符 ( key.c
) 映射到不同的函数。
关于c++ - libtcod c++ 的键盘命令功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34301299/
我正在浏览 Roguebasin python/libtcod roguelike tutorial .我遇到的问题是,每次调用 key = libtcod.console_wait_for_keyp
我正在使用 libtcod 和 c,但我的移动函数不响应输入,这是函数被调用时的样子 TCOD_key_t key; move_entity(player.x, player.y, k
我正在尝试静态链接 libtcod我的 C++ 项目没有成功。我遇到很多链接错误,包括: ./tuto: 加载共享库时出错:libtcodxx.so.1: 无法打开共享对象文件:没有这样的文件或目录
我最近为我的 rougelike 从 SFML 切换到 libtcod,因为我发现 libtcod 对于这类游戏更方便。我找不到任何解决方案的一个问题是如何存储键盘绑定(bind)函数。 在 SFML
每次我运行这个窗口都会立即关闭,并返回 3 #include "libtcod.hpp" int main() { TCODConsole::initRoot(80,50, "j", fals
因此,与许多人一样,我正在阅读有关在 Python 中使用 libtcod 的 roguelikes 的教程。 http://www.roguebasin.com/index.php?title=Co
我有一个辅助函数,它接受一个字符串和一个用于格式化字符串的颜色 vector ,现在我的解决方案是手动检查颜色 vector 的大小,并使用相同数量的颜色调用控制台打印颜色。 假设我有一个 4 的颜色
在Python/Libtcod tutorial在 Roguebasin控制角色的基本代码使用上下左右键。有没有办法让它使用 WSAD 或任何其他 key ? Libtcod 只允许我使用“特殊”键,
我正在尝试使用 C++ 和 libtcod 制作一个简单的 rouge 类游戏。我正在尝试编译使用 TCODColor 声明 col 变量的代码 TCODColor col; 这是实际的错误: 错误:
我正在使用 Libtcod 和 Python 构建一个回合制策略游戏。游戏 map 具有可变地形,每个方 block 可以是 5 种类型中的一种: 平原 - 移动成本 1 森林 - 成本 2 河流 -
我正在尝试使用 tcod-rs 向我的 roguelike 添加图形 block 图书馆。 根控制台的 put_char_ex 函数(或 C 版本,TCOD_putwchar)都只接受 char。要使
我是一名优秀的程序员,十分优秀!