ゲーム制作講座1

1.絵を画面に表示しよう


 ゲームではまず絵を画面に表示できなければ話になりません。
 そんなわけでまずは適当な絵を画面に表示できるようになりましょう。

 まず適当なグラフィックファイルを以下のフォルダにコピー等で入れてください。

    VisualC++6.0 又は VisualC++.net の場合
       サンプルプログラム用フォルダ( DxSample ) の中の『VC』というフォルダ。

    BorlandC++ Compiler 5.5 の場合
       サンプルプログラム用フォルダ( DxSample ) の中の『BCC』というフォルダの中の『Debug』というフォルダ。

 注 …  DXライブラリが対応している画像ファイル形式は BMP, JPG, PNG, ARGB, TGA, DDS の
    6形式のみです。 GIFファイルやその他のグラフィックファイルは表示できませんので気を付けてください。

#include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // DXライブラリ初期化 if( DxLib_Init() == -1 ) return -1 ; // 画面に絵を表示 LoadGraphScreen( 0 , 0 , "test1.bmp" , FALSE ) ; // キーの入力待ち WaitKey() ; // DXライブラリ使用の終了 DxLib_End() ; // ソフトの終了 return 0 ; }

 コピーが完了したら次に上のプログラムを Sample.cpp に丸ごとコピーします。
(もし Sample.cpp になにか書かれていたらすべて消してください。)

 次に LoadGraphScreen と書かれている行の test1.bmp と書かれている部分を
自分が規定のフォルダにコピーしたグラフィックのファイルネームに書き換えます

注 …  拡張子も付けてください。拡張子とはファイル名の後につく『.』と3文字
    程度の文字列のことです。
      (例: ビットマップファイル = BMP , JPEGファイル = JPG )

 コピーしたグラフィックのファイルネームに書き換えたらおもむろに F7 キーを
押しましょう。色々下に表示されると思います、そしてそれが止まったら今度は F5
キーを押しましょう、画面が真っ暗になって、画面の左上にコピーしたグラフィックが
表示されれば成功です。なにかキーを押してもとの画面に戻しましょう。

(表示されなかったら失敗です、書きかえるところが合っているか、ファイル名が
合っているか、拡張子はちゃんとついているか調べてください。それでも駄目なら
ご一報下さい。(^^;)


<実行例>


 実行が済んだところでプログラムを一番上から解説したいと思います。
 まず
#include "DxLib.h"
 ですが、C言語をかじった方には何となく分かると思いますが、簡単に言うとDXライブラリの
関数達を使えるようにするための記述
です。これがないとDXライブラリが使えません
つまりDXライブラリを使うプログラムでは必ずこの記述が必要になりますので覚えておいてください。

 次に
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) {
 です。
 『WinMain』という記述を見てぴんと来た方もいると思いますが、これは普通のC言語プログラムで
言うところの main 関数です。Windows で動作するソフトでは main 関数の代わりに WinMain 関数を
使います
。よってこれがないとプログラムが動きません。

 WINAPI だの HINSTANCE だのとごてごて付いていますが、DXライブラリを使う以上これらの意味を
知る必要はありませんし、WinMain に引っ付いてくるこれらの引数を使うこともありません。
ただ WinMain の定義はこれに固定なので記述しなければならないのです。
(新たにソフトを作る際は上記の記述をコピー&ペーストすればOKです)
 とにかく Windows のソフトはこの関数からすべてが始まると言うことだけを覚えておいてください。

 では WinMain 関数の中に入ります。
 次に登場するのが
// DXライブラリ初期化 if( DxLib_Init() == -1 ) return -1 ;
 です。
 『DXライブラリ初期化』という記述の通りこれはDXライブラリを初期化しています。つまり使う
ための準備をするのです。
 準備をする関数は DxLib_Init で、引数はありません。説明を読んでいただければ分かると思いますが
この関数は準備に失敗すると -1 を戻り値として返してきます。
 ここで DxLib_Init 関数の戻り値が -1 の場合 return -1 ; で関数 WinMain から出る記述をしています、
WinMain 関数から出るということはすなわちソフトの終了を意味します。なぜ戻り値が -1 だった場合
ソフトを終了するのか、いわずもがなですがDXライブラリを使ったソフトでDXライブラリの準備
が失敗したのですからもう終了するしかないわけです。
 ここで return -1 ; として -1 を返していますが、これには別に意味はありません。0でも99でもOK
です。そしてこの関数で -1 以外の値が返ってきたら晴れてDXライブラリを使えるわけです。
 次に今回の本命
// 画面に絵を表示 LoadGraphScreen( 0 , 0 , "test1.bmp" , FALSE ) ;
 の登場です。

 この LoadGraphScreen という関数はリファレンスを見ていただければ分かると思いますが、1番目に
表示する画像の左上の頂点に対応する画面上のX座標の値を、2番目に表示する画像の左上の頂点に対応
する画面上のY座標の値を引数としてとります。
 ややこしいので、この1番目の 0 値をとりあえず 300 にしてみます、すると。

 次に2番目の 0 だけ 100 にしてみます、すると。

 お分かりいただけたでしょうか?
 要約すると1番目の 0 の値を増やせば増やすほど画像は右にずれてゆき、2番目の 0 の値をを増やせば
増やすほど画像は下にずれてゆきます
。これだけ分かれば十分だと思います。納得いかない方は気が済む
まで値をいじってみてください。(^^

 なお、1番目の 0 を 640 以上にするか、2番目の 0 を 480 以上にすると画像は見えなくなります

 次に3番目の引数は表示する画像ファイルのファイル名を入れます。C言語の規則通り文字列はダブル
コーテーション(『"』)
でくくる必要があるのでご注意下さい。

 4番目の引数は透過色の有無を決めるフラグ…つまりまだ気にしなくて良いです。どうしても知りたい
方はリファレンスをみてください。答えは載っています。

さて本命の後です。
// キーの入力待ち WaitKey() ;
 この関数 WaitKey は関数名の通りキーが押されるまで待ちます、とにかく待ちます、押されるまで半永久的に
待ちます。ただそれだけの関数です。何かのキーが押されれば関数から返ってきます。

お次は
// DXライブラリ使用の終了 DxLib_End() ;
 です。
 この関数DxLib_End は注釈の通りDXライブラリの使用を終了するときに使います。この関数を呼ば
ないでソフトを終了させると場合によってはハングアップします。それほど重要な関数ですので、ソフト
を終了させる際は必ずその前に DxLib_End 関数を使ってください。中で何が行われているかは特に気にする
必要はありません、せっせと後始末をしているのです。

 そして最後に
// ソフトの終了 return 0 ; }
 としてソフトを終了しています。ついでに『}』も付けて WinMain 関数をここで閉じています。
 先ほども述べたように WinMain 関数が return で何の値を返しても特に問題はありません。
ただ定義が int 型の数値を返す関数となっているので仕方なく return をしているのです。

 さて、これで画面に絵を表示させることができるようになりました、私はプログラム覚えたての頃は
『絵を表示する方法がわかればこっちのもんだ!』と思ったものですが、皆さんはどうでしょうか?

 さて次はこの絵を動かしてみたいと思います。



戻る