サイログ。

~雑多な記事置き場~

配列にmove!,move_to!を付けてみた

簡単に言うと、各スプライトに効率的に移動位置を決めたかったのが発端です。

ブロックを渡すことで、各要素ごとの移動位置を決めることができます。

引数は、|要素, インデックス(0,1,2,...), x or dx, y or dy|となります。

#おまじない
require 'Miyako/miyako'

#配列を生成
r = [Miyako::Sprite.new(:size=>[20,20], :type=>:ac),
     Miyako::Sprite.new(:size=>[20,20], :type=>:ac),
     Miyako::Sprite.new(:size=>[20,20], :type=>:ac)]

#各スプライトに色を塗る
Miyako::Drawing.fill(r[0], :red)
Miyako::Drawing.fill(r[1], :blue)
Miyako::Drawing.fill(r[2], :green)

#各要素の位置を決定
#[(10,10),(10,10),(10,10)]に移動
r.move!(10,10)

#[(200,200),(220,220),(240,240)]に移動
r.move_to!(20,20){|e, i, x, y| [200+i*x,200+i*y]}

#SpriteListを生成
s = Miyako::SpriteList.new({
  a: Miyako::Sprite.new(:size=>[20,20], :type=>:ac),
  b: Miyako::Sprite.new(:size=>[20,20], :type=>:ac),
  c: Miyako::Sprite.new(:size=>[20,20], :type=>:ac)
})

#各スプライトに色を塗る
Miyako::Drawing.fill(s[:a], :half_blue)
Miyako::Drawing.fill(s[:b], :half_green)
Miyako::Drawing.fill(s[:c], :half_red)

#[(10,10),(10,10),(10,10)]に移動
s.move!(10,10)

#[(10,10),(30,25),(50,40)]に移動
s.move!(20,15){|pair, i, dx, dy| [i*dx,i*dy]}

#描画&おまじない2
loop do
  Miyako::Input.update
  break if Miyako::Input.quit_or_escape?
  Miyako::Screen.clear
  r.render
  s.render
  Miyako::Screen.render
end

これを実行すると、こうなります。

ほら、便利でしょう?(笑)