[HMC]年間5250円で独自ドメイン付属、ウィルスチェックありのレンタルサーバ!
Last update : 1999/12/13
ゲーム制作基礎 第7回
グラディウスのオプションみたいな処理をする
サンプルコードのダウンロード
  では、まずサンプルコードをダウンロードし、解凍して下さい。 私はVisual C++6.0でコンパイルしているので、をお持ちの方は Visual C++でプロジェクトファイルを開いて下さい(「game_07.dsw」をダブルクリックすれば開けます)。 圧縮ファイルに含まれる「game_07.exe」をダブルクリックし、実行してみて下さい。どうでしょう?画面が切り替わり、フルスクリーン化すると思います。 そして、何かキーを押すと、そのキーコードが画面に表示されると思います。 というわけで今回は、キー入力について解説したいと思います。
よくわからない解説
ではサンプルコードを見ていきます。
グラディウスのオプションは、本体(自機)の通った跡を遅れて通りますよね? ですから、こういった処理は、自機の座標をいくつか記憶しておき、古い座標の所へオプションを配置してやればいいのです。

まず、キャラクタ(自機)の座標を配列でいくつか確保してやります。
このとき、一番新しい座標をcx[0],cy[0]とし、一番古い座標をcx[CMAX-1],cy[CMAX-1]とします。 ゲーム中、キー入力があり、自機の座標が変更されようとしたら、cx[0],cy[0]〜cx[CMAX-2],cy[CMAX-2]の中身を cx[1],cy[1]〜cx[CMAX-1],cy[CMAX-1]へコピーします(つまり1つ後ろへずらす)。 それで、cx[0],cy[0]の値を変更してやればいいのです。
座標を一つ後ろへずらす時、
こんなふうに前からコピーしてしまうと、cx[0]の値がcx[1]へ、cx[1]の値がcx[2]へ・・・というように 全て同じ値になってしまうので、やめましょう(爆。ちゃんと後ろからコピーしていきましょう。

で、自機の座標跡を作っていったら、次は表示ですね。
オプション用の画像は自機の座標跡の古い所から表示してやります。 まぁ、優先度の問題なのですが、先に描いた方が画面の後ろに表示されますよね? なので、新しい座標の所程、後で描いてやります(自機は一番最後)

上のようなプログラムだと、 80,60,40,20番目の座標へ順番にオプションを配置し0番の座標へ自機を配置しています。