2013.06.03 更新

- 戦え!ロケットマン & 電卓ソフトDentakun -

じゃんけんゲーム / 電卓ソフト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)虫の表示(弾の表示を参考にします。)
 (2)ロケットが虫に当たっているかどうかの判定(戦闘機が虫に当たっているかどうかの判定も加えます。)
  ロケットが虫に当たっているかどうかを判定するには、図2にとおり2つのキャラクター間の距離を計算し、「近い」「遠い」の判断を行います。以下にその例を示します。

		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命令と対になり、虫の数だけ繰り返す

 (3)ゲームが進む中で難易度が変わる工夫を加える(虫の数を増やす、ロケットの進む距離を制限するなど)

図2 2つのキャラクターの距離

 *こちらで使用している戦闘機のキャラクタは、夢蒼さん(http://game.yu-nagi.com/)制作のフリー素材を利用させて頂きました。

■ 電卓ソフトDentakun


<Back>   <Top>