SDLでキーボードの入力判定を行うにはSDL_GetKeyState()を使う。
Uint8 *SDL_GetKeyState(int *numkeys);
この関数はキーボードの状態を格納した配列へのポインタを返し、その配列のサイズがnumkeysに格納される。配列の値が1のときキーが押されていて、0のとき押されていないことを表す。
使い方は次の通り。
Uint8 *keys; keys = SDL_GetKeyState(NULL); if ( keys[SDLK_SPACE] == SDL_PRESSED ) { // スペースキーが押された時の処理 }
SDL_PRESSEDが押されている状態、SDL_RELEASEDが押されてない状態として定義されている。
#define SDL_RELEASED 0 #define SDL_PRESSED 1
SDLK_SPACEといったキーを表すキーシンボルはファイルSDL_keysym.hで定義されている。
とりあえず頻繁に使うであろうものをメモ。
SDLK_RETURN
SDLK_SPACE
SDLK_UP
SDLK_DOWN
SDLK_RIGHT
SDLK_LEFT
アルファベットのキーはSDLK_aというようにSDLK_のあとにアルファベットをつければよい。
シンボルの一覧のドキュメントはこちら(http://zinnia.dyndns.org/~cvsweb/sdldoc-jp/sdlkey.html)