| 概要 | チュートリアル | 機能一覧 | 関数名一覧 | 機能別一覧 | 色見本 | MMLの書き方 |
EzGraphはイベントドリブン型のプログラミングモデルをサポートしているため、 通常、キー入力はイベントハンドラを介して取得する。しかし、一部の プログラムでは、今現在押されているキーボードの状態を取得したい、 あるいは同時に押されている複数のキーの状態を取得したい場合も少なからずある。
そこで、EzGraphでは、現在押されているキーボードを取得するための関数群を 用意している。
リアルタイムなキー入力取得関数は、同時に押されている複数のキー状態を 取得することができる。そのため、getchar()関数のように、押されている キーの文字コードが単純に戻り値になるのではなく、
以下に簡単な例を示す。
#include <EzGraph.h>
int x = 300, y = 300;
void timer_event(void){
char keys[32];
EzQueryKeymap(keys);
if(EzIsKeyPress(keys, EZ_Up)){
y--;
}
if(EzIsKeyPress(keys, EZ_Down)){
y++;
}
if(EzIsKeyPress(keys, EZ_Right)){
x++;
}
if(EzIsKeyPress(keys, EZ_Left)){
x--;
}
EzFillCircleB(x, y, 10);
EzShowBuffer();
}
int main(){
EzSetTimerHandler(timer_event, 40);
EzEventLoop();
}
このプログラムを実行すると、タイマーイベントにより、40ms毎に
timer_handler()関数が呼び出される。この時、カーソルキーの上が
押されていれば●が上に、下が押されていれば下に、右が押されていれば右に、
左が押されていれば左に移動する。また、上キーと右キーを同時に押すと、
右上に移動する。ただし、キーの組み合わせによっては、同時押し判定を
できない場合があるので注意すること。