Allegroプログラム Level 2

今回はLevel 1 まで進めます。

以下のURLを参考

龍神録プログラミングの館
http://dixq.net/rp/

プログラミング/初心者向け/チュートリアル/段階的学習/STGを作れ
http://wiki.game-develop.com/index.php?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%2F%BD%E9%BF%B4%BC%D4%B8%FE%A4%B1%2F%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB%2F%C3%CA%B3%AC%C5%AA%B3%D8%BD%AC%2FSTG%A4%F2%BA%EE%A4%EC

Level2 キー入力を作る
キー入力(ジョイスティック入力)されたら自機が動くようにしましょう。

初期化処理に 以下を追加

[c]
// キーボード入力の初期化
if(!al_install_keyboard()) {
fprintf(stderr, "failed to initialize keyboard!\n");
al_destroy_display(display);
return -1;
}

al_register_event_source(event_queue, al_get_keyboard_event_source());

[/c]

 

イベントキャッチに以下を追加

[c]
if(ev.type == ALLEGRO_EVENT_KEY_DOWN) {
// 何キーが押したらここにくる
 switch(ev.keyboard.keycode) {
case ALLEGRO_KEY_UP:
g_keys[KEY_UP] = true;
break;

case ALLEGRO_KEY_DOWN:
g_keys[KEY_DOWN] = true;
break;

case ALLEGRO_KEY_LEFT:
g_keys[KEY_LEFT] = true;
break;

case ALLEGRO_KEY_RIGHT:
g_keys[KEY_RIGHT] = true;
break;
}
}else if(ev.type == ALLEGRO_EVENT_KEY_UP) {
// 何かキーが押して放されたらここにくる
switch(ev.keyboard.keycode) {
case ALLEGRO_KEY_UP:
g_keys[KEY_UP] = false;
break;

case ALLEGRO_KEY_DOWN:
g_keys[KEY_DOWN] = false;
break;

case ALLEGRO_KEY_LEFT:
g_keys[KEY_LEFT] = false;
break;

case ALLEGRO_KEY_RIGHT:
g_keys[KEY_RIGHT] = false;
break;

case ALLEGRO_KEY_ESCAPE:
exitFlg = true;
break;

default:
break;
}
}
[/c]

 

画像移動の処理はこんな感じで

[c]
enum MYKEYS {
KEY_UP,
KEY_DOWN,
KEY_LEFT,
KEY_RIGHT
};

int g_keys[4];

/*
*
* keyinput: キー操作の結果
* @param
* @return
*
*/
void keyinput() {
double x = 0;
double y = 0;

if (g_keys[KEY_UP]) {
y -= 4;
}

if (g_keys[KEY_DOWN]) {
y += 4;
}

if (g_keys[KEY_LEFT]) {
x -= 4;
}

if (g_keys[KEY_RIGHT]) {
x += 4;
}

// キャラの移動
chr_move(x, y);
}
[/c]

 

最後は解放処理

[c]
// キーボード入力の解放
al_uninstall_keyboard();
[/c]

コメント

タイトルとURLをコピーしました