キーボードイベントを処理するためにsdl2を使用して簡単なゲームを作成しようとしています。しかし、主な問題は、Clionの組み込みコンソールでも、外部のプログラムでも私のプログラムでは何のイベントも検出できないということです。プログラム開始時にSDL_AUDIODEVICEADDED
が2回しか捕捉されません。ここに私のコードは次のとおりです。あなたは、ウィンドウを作成する必要がSDL2キーボードの検出が機能しません
#include <iostream>
#include "include/SDL2/SDL_keyboard.h"
#include "include/SDL2/SDL_keycode.h"
#include "include/SDL2/SDL_scancode.h"
#include "include/SDL2/SDL.h"
using namespace std;
int main(int argc, char* argv []) {
SDL_Event event;
bool running = true;
SDL_Init(SDL_INIT_EVERYTHING);
int x, y;
while(running){
if(SDL_PollEvent(&event)){
switch(event.type){
case SDL_QUIT: running = false; break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym){
case SDLK_q:
running = false;
break;
}
break;
case SDL_MOUSEBUTTONDOWN:
SDL_GetMouseState(&x, &y);
cout << "[SDL_MOUSEBUTTONDOWN] " << "x = " << x << " y = " << y << "\n";
break;
case SDL_MOUSEMOTION:
x = event.motion.x;
y = event.motion.y;
cout << "[SDL_MOUSEMOTION] " << "x = " << x << " y = " << y << "\n";
break;
}
}
}
}
SDL_Init
0を返します。
私はあなたの問題だとは思っていませんが、このlazy fooのチュートリアルhttp://lazyfoo.net/tutorials/SDL/03_event_driven_programming/index.phpを見ていきたいと思います。私は彼がポーリングをやや異なったやり方で行っているのを見ています( 'while'と' if'')。私はあなたがイベントを生成するときとコードがそれをポーリングしようとするときの間にある種のタイミング問題があると思うでしょう。 –