Ruby/SDLで砲弾撃つゲームつくった。
1週間前からRuby/SDLで作ってたゲームがひとまず完成しました。
砲弾を撃ち出して、的に当てるゲーム。
ゲーム画面
- 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つしかないので増やさなきゃいけない。
障害物ももう少し種類がほしいな。