[目次へ][前へ][次へ][表紙へ]
 シューティングゲームを作ろう その6

 10.種類1番の敵

 1番の敵は、下から現れて斜め上に動きます。



 10-1.種類1番の敵の出現
	;敵の出現
			・
			・
			・
			switch enemy_kind(n)
			case 0:
				・
				・
				・
			case 1:
				enemy_x(n) = rnd(GWIDTH - 32 + 1)
				enemy_y(n) = GHEIGHT
				if enemy_x(n) + 16 >= GWIDTH / 2 {
					enemy_dx(n) = -2
				} else {
					enemy_dx(n) = 2
				}
				enemy_dy(n) = -1
				swbreak
			case 2:
				・
				・
				・

 この敵はただ斜め上に動くだけで、第何段階というものはありません。ですからenemy_phaseは使いません。

 出現位置は、x座標は0 〜 GWIDTH - 32、y座標はGHEIGHTとします。画面右側に出したら左斜め上に、左側に出したら右斜め上に動くようにenemy_dx(n)、enemy_dy(n)を設定します。そうするとバランスがいいと思われます。一度に上に1ドット、横に2ドット動くものとします。

 一見、enemy_x(n)がGWIDTH / 2以上であれば画面右側にいる、としても良いように思えます。

 赤い線は画面中央を表します。
 ではこの場合はどうでしょうか。

 この場合も、右にいます。つまり敵の中心座標が画面右側にあれば右、左側にあれば左にいるものとします。

 10-2.種類1番の敵の移動
	;敵の移動
			・
			・
			・
			switch enemy_kind(i)
			case 0:
				・
				・
				・
			case 1:
				if enemy_x(i) <= -32 | enemy_x(i) >= GWIDTH { enemy_state(i) = 0 }
				swbreak
			case 2:
				・
				・
				・

 敵が画面左端または右端からはみだしたら消します。

 11.種類2番の敵

 2番の敵は、画面左端か右端から現れてやや斜め下に動き、画面を横切ります。



 11-1.種類2番の敵の出現
	;敵の出現
			・
			・
			・
			switch enemy_kind(n)
			case 0:
				・
				・
				・
			case 1:
				・
				・
				・
			case 2:
				if rnd(2) == 0 {
					enemy_x(n) = -32
				} else {
					enemy_x(n) = GWIDTH
				}
				enemy_y(n) = rnd(GHEIGHT / 2 + 1)
				if enemy_x(n) == -32 {
					enemy_dx(n) = 3
				} else {
					enemy_dx(n) = -3
				}
				enemy_dy(n) = 1
				swbreak
			swend
				・
				・
				・

 x座標は、左から現れるか、右から現れるかをランダムに決めます。y座標は、0 〜 GHEIGHT / 2とします。つまり画面の上の方です。左から現れる場合はenemy_dx(n) = 3(右向き)、右から現れる場合はenemy_dx(n) = -3(左向き)とします。一度に下に1ドット、横に3ドット動くものとします。

 11-2.種類2番の敵の移動
	;敵の移動
			・
			・
			・
			switch enemy_kind(i)
			case 0:
				・
				・
				・
			case 1:
				・
				・
				・
			case 2:
				if enemy_dx(i) == -3 & enemy_x(i) <= -32 { enemy_state(i) = 0 }
				if enemy_dx(i) == 3 & enemy_x(i) >= GWIDTH { enemy_state(i) = 0 }
				swbreak
			swend
			・
			・
			・

 左向きに動いていて画面左端からはみ出した場合と、右向きに動いていて右端からはみ出した場合に消します。


[目次へ][前へ][次へ][表紙へ] inserted by FC2 system