概要 | チュートリアル | 機能一覧 | 関数名一覧 | 機能別一覧 | 色見本 | 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()関数が呼び出される。この時、カーソルキーの上が 押されていれば●が上に、下が押されていれば下に、右が押されていれば右に、 左が押されていれば左に移動する。また、上キーと右キーを同時に押すと、 右上に移動する。ただし、キーの組み合わせによっては、同時押し判定を できない場合があるので注意すること。