【问题标题】:SDL_PollEvent not triggeringSDL_PollEvent 未触发
【发布时间】:2012-11-03 02:22:15
【问题描述】:

我最近才开始使用 C 语言并使用 SDL,所以我确信这是我搞砸的基本内容,但我能找到的每个示例代码看起来都像我的,除了我的不起作用。因此,我们欢迎任何帮助。

#include <stdio.h>
#include <SDL.h>

int main(int argc, char *argv[])
{
SDL_Event event;
int game_running = 1;
while (game_running)
{
    while (SDL_PollEvent(&event))
    {
        switch (event.type) /* checking for event type */
        {
            case SDL_KEYDOWN:
                switch(event.key.keysym.sym)
                {
                    case SDLK_UP:
                        printf("You pressed up.\n");
                        break;
                    case SDLK_DOWN:
                        printf("You pressed down.\n");
                        break;
                }
                break;
            case SDL_KEYUP:
                printf("You stopped pressing the button.\n");
                break;
            case SDL_QUIT:
                game_running=0;
                break;
        }
    }
}
SDL_Quit();
printf("The program stopped.");

return 0;
}

【问题讨论】:

  • 定义“不起作用”。编译和运行程序时发生了什么/没有发生什么(具体来说,您的完整程序是什么)?
  • 这是在 main() 区域,所以现在这就是应该发生的一切,当我注意到一个 KeyDown 事件时,我想写“哦,嘿,你按下了键”(对不起,我没有用英文写那部分),以及 KeyUP 事件的不同消息。并且不能简单地工作意味着程序永远不会通过 PollEvent 并进入开关。
  • 我用整个代码更新了帖子,正如我现在所说的,除此之外它不会做任何其他事情。我只是想实现一个简单的keyevent检查系统。

标签: c sdl


【解决方案1】:

事件处理与显示表面相关联。添加如下内容:

SDL_Init (SDL_INIT_VIDEO);
SDL_SetVideoMode (320, 200, 8, 0);

它会起作用的。

【讨论】:

  • 谢谢,现在似乎可以工作了,我想我可以在不创建窗口的情况下使用它,我什至不确定我的思考过程是什么。不管怎样,谢谢。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多