Ruby物理エンジンにRuby/Tkで描画するサンプルを追加しました

http://github.com/technohippy/Pongo/tree/master

あとなんかいろいろとバグがあったので修正。目視・手打で移植すると当たり前だけどいろいろ間違えるっすね。p1とp2、一文字違いに気づくのに2日かかって心が折れかけた・・・。
ともあれ、これでLinuxな人はRubyさえあればあとは何もインストールしなくても物理エンジン試せるはずなのでぜひぜひ。

ついでに本家にあったCarDemoも移植。AS3版についてくるデモが二つとも動いたので、たぶん致命的なバグは残ってないんじゃないかなと。

ちなみに前回Shoesで書いた例Ruby/Tk用のレンダラ使って書き直すと、こう。

require 'tk'                                                                       
require 'pongo'                                                                    
require 'pongo/renderer/tk_renderer'                                               
require 'pongo/logger/standard_logger'                                             
include Pongo                                                                      
                                                                                   
root = TkRoot.new
canvas = TkCanvas.new(root, :width => 500, :height => 350)
canvas.pack

# レンダラとかロガーとか重力とかいろいろ設定
APEngine.renderer = Renderer::TkRenderer.new(canvas)
APEngine.logger = Logger::StandardLogger.new
APEngine.add_force VectorForce.new(false, 0, 2)

# パーティクルはグループに登録しないと駄目らしいので準備
default_group = Group.new
default_group.collide_internal = true

# 落下物。箱とか丸とか
default_group.add_particle(RectangleParticle.new(275, 90, 20, 30))
default_group.add_particle(CircleParticle.new(255, 150, 3))

# 地面
default_group.add_particle(RectangleParticle.new(250, 250, 300, 50, :fixed => true))

# グループをエンジンに登録
APEngine.add_group(default_group)

# 実行
TkTimer.start(10) do |timer|
  APEngine.step
  APEngine.draw
end 
Tk.mainloop

そういえばShoesよりもRuby/Tkの方がずっと早いんすね。RoboDemoでとても顕著。