Ruby/SDLで砲弾撃つゲームつくった。

1週間前からRuby/SDLで作ってたゲームがひとまず完成しました。
砲弾を撃ち出して、的に当てるゲーム。

physically impossible(物理的に不可能) - タイトル画面


physically impossible(物理的に不可能) - タイトル画面


ゲーム画面

  • THETA, V (画面左上)
    • 発射角, 発射速度。矢印キーで操作します。
  • STAGE(画面左上)
    • 現在のステージ。最大99ステージ作れます(作る気力があれば)。
  • Target
    • 的。弾が当たると消えます。これをすべて消すのがこのゲームの目的です。
  • Wall
    • 名前のまんま、壁。Ballを跳ね返します。
  • UpBlock
    • これに当たると弾がまっすぐ上昇します。このステージでUpBlockを使うと、的が一気に消せます。
  • Cannon
    • 砲台。プレイヤーが操作する部分。発射角度と発射速度を決定し、弾を発射します。
  • Ball
    • 砲弾です。Cannonから発射されます。Ballは放物線を描いて飛ぶようになってます。

弾の処理(一部)

# 弾の生成
def create( x, y, theta, v, rad )
	@flag = true		# 弾が発射中か
	@x = x			# X座標
	@y = y			# Y座標
	@r = 5			# 半径
	@v = v			# 速度
	@ax = 0		# X軸の加速度
	@ay = -9.8		# Y軸の加速度
	@dt = 0.05		# 縮小用
	@vx = @v*Math.cos(rad)	# X軸方向に進む距離
	@vy = @v*Math.sin(rad)	# Y軸方向に進む距離
end

# 弾の移動
def act
	@vx += @ax*@dt	# X軸方向に加速
	@vy += @ay*@dt	# Y軸方向に加速
	@x += @vx*@dt		# X軸方向に移動
	@y += @vy*@dt		# Y軸方向に移動
	if( @y<0 || @x<0 || @x>SCREEN_W )
		@flag = false	# 画面外に出たら弾を消す
	end
end

SKISSさんのrubyによるシミュレーション作成 その1を参考にしました。
物理シュミレーションと言うと、ちょっとかっこいいです。

課題

ステージの的とか障害物の位置情報は、ファイルから読み出すようになっているんですが、記述がめんどくさい。マップエディタ的なものがほしい。
あと、現在ステージが2つしかないので増やさなきゃいけない。
障害物ももう少し種類がほしいな。