ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

キー判定

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)