def pattern o , hs = Hash.new
    a     = hs[:aaa] || [40,20,-20,-40]
    speed = hs[:speed] || 2

    x , y , img = player_center_get( img.new )
    ang = homing_target x , y
    a.uy_map.+(ang) { | m |
      create( :enemy_shot , x , y , img , { angle: m , speed: speed } )
    }
  end 

こうやって引数とって、コピペを回避するんだけど、
パターンごとにこれやられると、分けがわからなくなる
上手いまとめ方が分からない
引数を受け取るメソッドと受け取らないメソッドで区分分けとか、弾幕パターンの仕様を、どこかにメモっていくしかないのかな?

>>780
デフォルト引数も知らないの?
基本的にはっしゅ引数の解凍は
def func o , hs = Hash.new
 n = hs[:n] || 0 # この 0 はデフォルトの値  つまり、呼び出し時に func(o,{}) でハッシュが何も指定されなければ0
end
意味わかる?