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

 6.自機の移動
	;
	;メイン・ループ
	;
*Main_Loop
	await 16
	gosub *Input_Key
	;自機の移動
	if myship_state != 2 {
		if leftkey == 1 { myship_x -= 4 }
		if rightkey == 1 { myship_x += 4 }
		if upkey == 1 { myship_y -= 4 }
		if downkey == 1 { myship_y += 4 }
		if myship_x < 0 { myship_x = 0 }
		if myship_x > GWIDTH - 32 { myship_x = GWIDTH - 32 }
		if myship_y < 0 { myship_y = 0 }
		if myship_y > GHEIGHT - 32 { myship_y = GHEIGHT - 32 }
	}

 ここから先がメイン・ループとなります。
 自機が移動できるのは通常状態の時か復活中の時です。爆発中は動けません。
 左右上下キーが押されていれば、myship_x、myship_yを増減します。例えば左キーと上キーが同時に押された場合は、myship_x -= 4とmyship_y -= 4が行われ、左斜め上に動きます。

 7.自機の弾の射出
	;自機の弾の射出
	if myship_state != 2 & pre_zkey == 0 & zkey == 1 & shot_f == 0 {
		dsplay 0
		shot_f = 1
		shot_x = myship_x
		shot_y = myship_y - 32
	}

 爆発中は弾を撃てません。また、すでに弾が存在している場合も撃てません。押しっぱなしでは撃てず、Zキーまたはボタン1を押すたびに撃てるものとします。

 ショット音を鳴らし、shot_fを1にします。自機の弾の座標をshot_x、shot_yに入れます。射出位置は自機の真上とします。自機の大きさも、弾の大きさも32×32ですから、x座標は自機と同じで、y座標は自機より32ドット上の位置です。



 8.自機の弾の移動
	;自機の弾の移動
	if shot_f == 1 {
		shot_y -= 16
		if shot_y <= -32 { shot_f = 0 }
	}

 自機の弾が存在するならば、上へ移動します。ここでは、一度に16ドット動くものとします。画面上端から消えたらshot_fを0にします。

 なお、「自機の弾の移動」処理は「自機の弾の射出」処理より前に書きます。後ろに書くと、射出の後すぐに移動を行ってしまい、最初に描かれるのが1回動いた位置になってしまうからです。


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