C言語ゲームプログラミング 第2回講座




2014年10月より個人の方を対象に、Study C無料提供を開始しました。
C言語を勉強中の方は、学習・教育に最適なC言語インタープリタのStudy Cを使ってみてください(個人の方は無料です)。
大学・高専・高校などの教育機関での採用実績も多数あるロングセラー商品Study Cが、個人向けに無料提供を始めました。
インタープリタの手軽さに加え、ゲームや3Dタートルグラフィックで楽しく勉強したりと、C言語の学習を協力にサポートします。
ブロック崩しゲーム 3Dツリー クリスマスツリー
また、このようなボタンの用意されているページでは、掲載しているプログラムをStudy Cに直接ロードし実行したりすることができます。
Study Cにロードする Study Cにロードし編集する Study Cにロードし実行する
Study C無料利用についての詳細は、このページを参照してください。



1.ビットマップファイルのロード

Study Cでビットマップファイルを表示するには、ファイルをロードして読み込む必要があります。 読込にはgl_loadbitmap()関数を使用します。gl_loadbitmap()関数は、読み込んだビットマップファイルを識別するための値(ハンドル)を返します。 その値がNULL(0)の場合は、読み込みに失敗した場合です。 gl_loadbitmap()関数の型はHBITMAPという特殊な型です。これはインクルードファイルないでtypedefによって定義されています。 typedefやHBITMAP等については、詳しく知っている必要は当分ないのでint、char型などの一種のように考えておいてください。 gl_loadbitmap()関数の使用例は次のようになります。

        HBITMAP hbmp;

        //ビットマップファイルの読み込み
        hbmp = gl_loadbitmap("c:\\windows\\赤レンガ.bmp");
        if(hbmp == NULL){
                printf("ビットマップファイルが見つかりません.\n");
                exit(0);
        }

gl_loadbitmap()関数には、前回確認したWindowsディレクトリ下に用意されている"赤レンガ.bmp"ファイルを使用します。 文字列定数として記述するので'\'文字が2個必要なので注意してください(文字列定数中で、\を表現するには\\と記述します)。 gl_loadbitmap()関数の返す値は、HBITMAP型として定義した変数に格納します。 この値がNULL(0)の場合は、ロードに失敗した場合です(その場合はエラーメッセージなどを表示してします)。 ファイルの指定に誤りがないか確認してください。


2.ビットマップの描画

ロードしたビットマップの描画には、gl_drawbitmap()関数を使用します。 gl_loadbitmap()関数の返した値(ハンドル)を指定して、ウィンドウ上のどの位置にどの大きさで表示するか指定します。 ビットマップを表示するプログラムは次のようになります。

#include <graph.h>

main()
{
        HBITMAP hbmp;

        //ビットマップファイルの読み込み
        hbmp = gl_loadbitmap("c:\\windows\\赤レンガ.bmp");
        if(hbmp == NULL){
                printf("ビットマップファイルが見つかりません.\n");
                exit(0);
        }
        //ウィンドウのオープン
        gl_openwin(-1, -1, 640, 480, 0);

        //ビットマップファイルの描画
        gl_drawbitmap(hbmp, 0, 0, 54, 96, 0, 0);
        //画面への反映
        gl_refresh();
}

gl_openwin()関数のモード指定が1の場合はこれでウィンドウ内に絵が表示されますが、モード指定が0の場合はgl_refresh()関数を実行した時点でウィンドウに表示されます。 実際には、Study Cがプログラム終了時やキー入力待ちの直前にgl_refresh()関数を呼び出しているのでモードによる違いはあまりわからないとと思います。
gl_drawbitmap()関数に与えている値の0, 0, 54, 96, 0, 0は、ウィンドウ上の(0,0)の位置(左上に)、横54、縦96のサイズでビットマップファイルを表示するという意味です。 最後の0, 0はロードしたビットマップの左上の位置から描くという指定です(この指定を変えることによりロードしたビットマップの10,10の位置から描画するという指定もできるわけです)。

このプログラムを実行した結果は次のようになります。
ビットマップファイルを表示