gpt4 book ai didi

c - 有没有办法在同一循环中渲染我的 Termbox 游戏并处理键盘事件?

转载 作者:行者123 更新时间:2023-11-30 14:32:43 27 4
gpt4 key购买 nike

我的 termbox 程序渲染屏幕和处理键盘事件时遇到问题。最近,我在大学完成了 C 和 C++ 类(class)。我想通过创建一个基本的贪吃蛇游戏来展示我的知识。第一步,我想要一个简单的渲染循环,让一个文本 block 简单地向左移动,并在到达第 0 个 x 坐标时退出游戏。当继续到下一个渲染帧时会出现问题,因为游戏正在单线程运行,在接受新的键盘事件之前不会渲染下一帧。通常,我希望游戏能够继续渲染,无论发生什么事件,新事件都会影响新帧。

至于潜在的解决方案,我考虑过使用多个线程来运行游戏循环并处理键盘事件。但是,我认为对于这样一个小问题来说这有点过分了,可能有比为简单的贪吃蛇游戏管理多个线程更简单的替代方案。

至于代码,很简单:

while (1)
{
tb_clear();
draw(gameState);
tb_present();

struct tb_event event;
tb_poll_event(&event);

if (event.ch == 'q')
break;
}

最佳答案

深入研究头文件后,我发现了一种不会永远等待的方法。

/* Wait for an event up to 'timeout' milliseconds and fill the 'event'
* structure with it, when the event is available. Returns the type of the
* event (one of TB_EVENT_* constants) or -1 if there was an error or 0 in case
* there were no event during 'timeout' period.
*/
SO_IMPORT int tb_peek_event(struct tb_event *event, int timeout);

关于c - 有没有办法在同一循环中渲染我的 Termbox 游戏并处理键盘事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59698658/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com