2013.06.03 更新
- 戦え!ロケットマン & 電卓ソフトDentakun -
■ シューティングゲーム「戦え!ロケットマン」
キーボードのカーソルキーによってキャラクタ(戦闘機)を移動させ、スペースキーでロケットを発射。このロケットで出現する虫を打ち落とすゲームです。じゃんけんゲームを完成した方は是非チャレンジしてみてください。
まず、次の実行形式のファイルをダウンロードし、ゲームのイメージをつかんでください。(動作確認環境:Windows8, 7)
・実行形式のファイルshu02.exe
・キャラクター画像 sozai4.bmp (マウス右クリックで「対象をファイルに保存」を選択。shu02.exe と同じフォルダに保存。shu02.exeをクリックすると起動します。)
では、このシューティングゲームの作成に入ります。まずは、下記のソースサンプル1をダウンロードし、カーソルキーを利用して戦闘機を動かす方法を見てください。19行目の命令語「stick」がキーの入力を調べるためのものです。また、戦闘機の位置は変数pxとpyを用いています。
ソースサンプル1 shu01.hsp (カーソルキーの利用に関して)
次にロケット弾を発射させる方法です。以下のソースサンプル2を参考にしてください。弾は一度に4発まで打てるものとし、4発の弾を位置を記録するために配列変数を用いています。(5〜8行目がその配列変数を用意しているところ。38〜44行目が弾の有無を調べ、表示させているところ。)
ソースサンプル2 shu02.hsp (弾の発射に関して)
図1 シューティングゲームの画面
この後は以下を参考に作成を進めてみてください。
(1)虫の表示(弾の表示を参考にします。)repeat 3 // 3は虫の数(インデックスcntは0から2まで変化する) ntm=0 // ロケット弾を区別するインデックス(添え字) *kensatm // 弾が複数ある場合にはここに戻って処理を繰り返す if tf(ntm)=1 { // tfは弾の有無をチェックするための配列。1なら「弾あり」となり虫との距離を計算する。 dx=(x1(cnt)-x2(ntm))*(x1(cnt)-x2(ntm)) // 虫と弾のx方向の距離の2乗。cntは虫を区別するためのインデックス dy=(y1(cnt)-y2(ntm))*(y1(cnt)-y2(ntm)) // 虫と弾のy方向の距離の2乗 if dx<625 & dy<2501 { // 虫と弾の距離判定条件「x方向dx<625かつy方向dy<2501」 mf(cnt)=0 // 虫の位置が条件をみたしているため虫を消す。mfは虫の有無を表わす配列。 sc=sc+10 // スコアを更新 pos x1(cnt),y1(cnt) // 虫の位置を指定 gcopy 1,150,0,50,50 // 虫ではなく、消滅用の画像を表示 } } ntm=ntm+1 // 次の弾を調べるためインデックスを更新 if ntm < tmx+1 : goto *kensatm // 弾のインデックスが弾数(tmx+1)を超えていなければkensatmへ戻る loop // repeat命令と対になり、虫の数だけ繰り返す
*こちらで使用している戦闘機のキャラクタは、夢蒼さん(http://game.yu-nagi.com/)制作のフリー素材を利用させて頂きました。