StudioGIW(スタジオギウ)
 [ StudioGIW TOPページへ ] 

【 ゲームプログラムって何? 】 第2回 〜大きい絵を描画するには〜


■このe-BOOKの目的

ゲームプログラムの一部を紹介し、「何となくプログラムを分かってもらう」ことが目的です。
(最適化などは行わず、あくまで”分かってもらう”ことを重視します)

パソコン用語などの基本説明は省いてますので、分からない部分は自身で調べてください^^


大きい絵を描画するには

大きいドット絵、例えば、64×64ドットのキャラ絵を、画面の左上に表示する方法を、まずは日本語で書いてみます。
※画面サイズは前回と同じ、640×480です。(パレットは統一なので、気にしなくてOKです)

 ・Y軸の 0 から 63 まで↓側をループ。
 ・X軸の 0 から 63 まで↓側をループ。
 ・描画マップの現在地を算出。
 ・ドット絵の現在地を算出。
 ・map[mapの現在地] に dot[dotの現在地] の値を入れる。
 ・X軸のループへ戻る
 ・Y軸のループへ戻る

という感じで、「ループ(繰り返し)」という処理を使って描画します。
このループ処理は、プログラムの基本なので、描画だけでなく、あらゆる処理で使いますよ。

上記をC言語で書くとこうなります↓(重要な部分を色変えしてます)

for ( y = 0; y <= 63; y ++ )
{
  for ( x = 0; x <= 63; x ++ )
  {
    map_posi = x + y * 640;
    dot_posi = x + y * 64;
    map[ map_posi ] = dot[ dot_posi ];
  }
}

如何でしょうか。
for という「繰り返し命令」から、{ } カッコで括った範囲を、ループさせることができます。

map_posi、dot_posi、map、dot、x、y は、「変数」と呼ばれるもので、
プログラマが、自由に名付けることができます。

※ for は「固有命令」なので、変更できません。

例えば、↓のように書いても、全く同じ処理をしたことになります。

for ( y_ziku = 0; y_ziku <= 63; y_ziku ++ )
{
  for ( x_ziku = 0; x_ziku <= 63; x_ziku ++ )
  {
    map_no_iti = x_ziku + y_ziku * 640;
    dot_no_iti = x_ziku + y_ziku * 64;
    map_data[ map_no_iti ] = dot_data[ dot_no_iti ];
  }
}

この for 命令を使えば、大きい画像でも簡単に表示できますね。

上記のプログラムでは、画面の左上にしか表示できませんが、
少し手を加えることで、表示位置を変えることもできます。

↓は、画面の X = 20, Y = 10 の位置に、ドット絵を表示する場合です。(追加した箇所の色を変えてます)

px = 20;
py = 10;
for( y = 0; y <= 63; y ++ )
{
  for( x = 0; x <= 63; x ++ )
  {
    map_posi = x + y * 640 + px + py * 640;
    dot_posi = x + y * 64;
    map[ map_posi ] = dot[ dot_posi ];
  }
}

こうしておけば、最初の px と py の値を変えるだけで、好きな位置にドット絵を描画することができます。

これだけ分かれば、”プログラムって何なのか大体分かった”と言ってしまってOKですw

反響があれば、次回はもう少し詳しいプログラム(と言ってもあくまで非プログラマ向けですが)を紹介しようと思ってます^^


 Web公開:2009年 4月8日
 StudioGIW(スタジオギウ) / M.Sekiya


 


StudioGIW(スタジオギウ)
[ StudioGIW TOPページへ ]