GTK+で落書き(Ruby)


GTK+ でアニメーションしてみました。エンターキーの入力で終了します。簡易ライブラリ mygtk.rb についてはここを参照してください。
circle_fall.rb

require_relative 'mygtk'

L = 400

MyGtk.app width: L, height: L, title: "Circle Fall" do
  timer(10) do
    show = proc do |y|
      x = rand(L - 10)
      color(rand(65535), rand(65535), rand(65535))
      arc(true, x, y, 10, 10, 0, 64 * 360)
    end

    show.call(0) if rand < 0.15
    show.call(rand(L - 10)) if rand < 0.05
    
    img = get_pic(0, 0, L, L)
    show_pic(img, 0, 1)
    color(0, 0, 0)
    rectangle(true, 0, 0, L, 1)
  end
  
  key_in do |w, e|
    Gtk.main_quit if e.keyval == Gdk::Keyval::GDK_Return
  end
  
  draw do
    color(0, 0, 0)
    rectangle(true, 0, 0, L, L)
  end
end

動画化には ffmpeg を使いました(参照)。

これ、どこかでメモリリークしているようです。