画像の表示 |
1.パソコンの画面について |
パソコンの画面は、方眼紙のようなものだと思って下さい。その一つ一つのます目に対応するのがドット(点)です。パソコンの画面は、縦横にたくさんのドットが並んで構成されています。これに色をつけていくことによって、絵を描くのです。文字も、ドットに色づけすることによって書かれています。
どのドットであるかは座標で指定します。HSPでウィンドウを作ると、座標を(x, y)と表すならば、ウィンドウの左上隅のドットが(0, 0)となります。x方向は、右に行くほど大きな値となります。y方向は、下に行くほど大きな値となります。左から7番目、上から5番目のドットの座標は(6, 4)です。数学的な座標とは、Y軸が上下逆になっています。
2.ウィンドウの作成 |
ウィンドウを作成するには
screen 0, 640, 480
とします。第1引数はウィンドウIDを指定します(0以上)。
screen 0, 640, 480 screen 1, 640, 480
このようにすると0番と1番の2枚のウィンドウを作ることができます。ですが、通常は1枚しか使いませんので、0とします。
IDは識別子と訳され、何かに番号をつけて識別します。例は悪いですが刑務所の囚人を称呼番号で呼びますよね。あれと同じようにウィンドウに番号をつけて識別するのです。
第2引数は幅、第3引数は高さをドット数で指定します。
フルスクリーンモード(ゲーム画面がディスプレイいっぱいに表示されるモード)を使わない場合、ウィンドウの大きさは自由に設定して構いません。フルスクリーンモードへの切り替えにも対応する場合、そうはいきません。フルスクリーンモードで使用できる画面解像度は、ビデオカードにより異なります。最も多くのカードがサポートしているのは、640×480(幅640、高さ480)の解像度だそうです。つまり、できるだけ多くの種類のパソコンで遊んでもらうためには、画面のサイズは640×480でなければなりません。
今まで、screen命令を書かなくてもウィンドウが出ていました。書いていない場合、自動的に定められた大きさのウィンドウが作られるようになっているのです。
3.仮想画面に絵のファイルを読み込む |
このような32×32の、"myship.bmp"という名前の画像ファイルを用意しました。
この画像を使うにはまず仮想画面に読み込まなければなりません。以下のようにします(画像はプログラムと同じフォルダに入っているものとします)。
celload "myship.bmp", 1
第1引数はファイル名、第2引数はウィンドウID(1以上の値)を指定します。celload命令を実行すると仮想画面が作成され、画像が読み込まれます。この画面はディスプレイに表示されません。ではどこにあるかというと、メモリ内に作られます。実際の画面ではない仮想的な画面という意味で仮想画面といいます。これは非表示のウィンドウであるとも言えます。そこでscreen命令と同様、ウィンドウIDを付与して管理します。
4.画像の表示 |
gsel 0 pos 304, 416 gmode 2 celput 1
gsel 0
画面制御命令(celput命令等)の描画先をウィンドウIDが0番の画面に変更します。
pos 304, 416
描画する座標を指定します。第1引数はx座標、第2引数はy座標です。画像の左上隅の座標となります。
gmode 2
celput命令で描画する際に、完全な黒(赤、緑、青成分がすべて0)の部分は透明として扱うと指定します。この部分には背景がそのまま表示されます。
celput 1
ウィンドウIDが1番の仮想画面の画像を、gselで指定した画面に描画します。
まとめますと、以下の通りです。
screen 0, 640, 480 celload "myship.bmp", 1 gsel 0 pos 304, 416 gmode 2 celput 1
実行結果
5.画像の分割 |
次のような"enemy.bmp"という128×32の画像が、ウィンドウIDが1番の仮想画面に読み込まれているとします。この画像は、32×32の絵が4つ並んだものです。
celdiv 1, 32, 32
とすると、32×32の大きさで分割し、左端を0番とする分割画像No.がつきます。
celdiv ウィンドウID, 分割する幅, 分割する高さ
指定した分割画像No.の絵を表示させるには
celput ウィンドウID, 分割画像No.
とします。
例.分割画像No.が2番の絵を表示します。
screen 0, 640, 480 celload "enemy.bmp", 1 celdiv 1, 32, 32 gsel 0 pos 304, 416 gmode 2 celput 1, 2
上図のような128×128の画像が、ウィンドウIDが1番の仮想画面に読み込まれている場合に
celdiv 1, 32, 32
とすると、以下のように 分割画像No.がつきます。
補足 |
・メモリ |
記憶装置にはメモリとハードディスクがあります。画像や音楽はハードディスクに保存しています。ハードディスクは大容量ですが、その内容を読んだり、書き込んだりするのが遅いです。メモリは容量が小さいですが読み書きが速いです。画像を表示するたびにハードディスクから読み込んでいたのではとても遅くなってしまいます。そこでアプリケーションで、ハードディスクからメモリに読み込んでおいて表示させるのです。 ハードディスクの内容は電源を切っても消えませんが、メモリの内容は電源を切ると消えます。 |
・黒色を使うには |
celput命令で描画する際に、完全な黒は透明として扱われると書きましたが、黒色を使いたい場合は赤、緑、青成分のどれかを1にした色を使ってください。完全な黒と、ほとんど見分けがつきません。 |
・グラフィック・ツール |
画像はグラフィック・ツールを使用して描きます。ゲームの画像のようなドット単位に色づけしていく作業に向いているツールとしては、例えばALFARやEDGEがあります。 |