配列に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
これを実行すると、こうなります。
ほら、便利でしょう?(笑)