シューティングゲームを作りながらプログラミングを学ぼう! 高校生対象・プログラミング入門 (C言語編) |
●プログラムでは,複数のデータをひとつにまとめてメモリ上に格納し,それらをまとめて
処理することが多い。プログラミング言語では,そのように複数のデータをまとめて格納
する手段が用意されている。その代表的な手段が「配列(array)」である。ここでは,配列
について学習していこう。
【配列まで進んでいる場合は】
●配列を使って,自機から弾を発射してみよう。testmain.cppを以下の内容に差し替えて実行してみよ。スペースバーを
押すと自機から弾が出ることが確認できる。
新たに追加したのは緑色の2箇所(①,②)だけである。まず,アイディアを示す。array.cppの①部分で3つのint型配列
shots_Life,shots_x,shots_yを宣言している。要素数はいずれも10個である。これらの3つの配列を使って,下図のよ
うに0番目〜9番目の弾を表す。shots_Lifeの要素は,弾が未発射である場合は0,発射済みの場合は1という値を設定する
とする。shots_xとshots_yは,それぞれの弾のxy座標を表すわけである。
また,①の最後では,自機の弾のグラフィックデータ("Chars16_orange.bmp",大きさは16ピクセル×16ピクセル)を読み
込んでいる。
次に,whileによる無限ループの中の緑のエリア②の部分を見てみよ。この部分は前半のif文と後半のfor文から成り立っている。
前半のif文では,スペースキーが押されたかを判定し,スペースキーが押されたことが分かった場合,未発射の弾を
配列の中から1個見つけて,発射済みに設定し直し,xy座標を自機の鼻先の位置に設定している。
そして,後半のfor文では,全ての弾に対し,画面から出た弾は未発射状態に戻し,発射済みの弾に関しては,弾のグ
ラフィックを描画し,次の描画時のために弾の座標を前へ進めている。
array.cpp
【さらに敵を登場させてみよう】
更に,敵を登場させてみたのが以下のarray2.cppである。testmain.cppの中身と入れ替えて実行してみよ。
array2.cpp