EzGraph : Eazy Graphic Library

概要 チュートリアル 機能一覧 関数名一覧 機能別一覧 色見本 MMLの書き方

リアルタイムなキー入力とは

EzGraphはイベントドリブン型のプログラミングモデルをサポートしているため、 通常、キー入力はイベントハンドラを介して取得する。しかし、一部の プログラムでは、今現在押されているキーボードの状態を取得したい、 あるいは同時に押されている複数のキーの状態を取得したい場合も少なからずある。

そこで、EzGraphでは、現在押されているキーボードを取得するための関数群を 用意している。

プログラム例

リアルタイムなキー入力取得関数は、同時に押されている複数のキー状態を 取得することができる。そのため、getchar()関数のように、押されている キーの文字コードが単純に戻り値になるのではなく、

  1. キーボードの状態を取得する
  2. あるキー(例えば、シフトキー)が押されているか判定する
という流れになる。複数のキー判定を行いたい場合は、必要な数だけ 2.の処理を行う。

以下に簡単な例を示す。

#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()関数が呼び出される。この時、カーソルキーの上が 押されていれば●が上に、下が押されていれば下に、右が押されていれば右に、 左が押されていれば左に移動する。また、上キーと右キーを同時に押すと、 右上に移動する。ただし、キーの組み合わせによっては、同時押し判定を できない場合があるので注意すること。

チュートリアルの目次

  1. 初歩的な使い方
  2. 複雑な図形描写
  3. イベントドリブン
  4. ダブルバッファリング
  5. 画像ファイルの表示
  6. リアルタイムなキー入力
  7. ネットワーク機能

Takahiro SASAKI
E-mail: sasaki at arch.info.mie-u.ac.jp