2006-07-06
■ [ruby] Object#pretty_inspect
いつもppを便利に使わしてもらってる のだが、唯一ppした結果を文字列で得るメソッドがない($>に出力することしかできない)のが不満だった。
が、Ruby 1.8.5では obj.pretty_inspect という形式でobjをppした結果が得られるようになるらしい。やったね。
■ [ruby][SDL] Ruby/SDLでAAを表示する
意外と簡単にできてびっくりした。
require 'sdl'
SDL.init( SDL::INIT_VIDEO )
screen = SDL.setVideoMode( 640, 480, 16, SDL::SWSURFACE )
SDL::TTF.init
msp = SDL::TTF.open('C:\WINDOWS\Fonts\MSPgothic.ttf',16)
text = <<EOD
#ここに何かAAを貼る
EOD
screen.fill_rect(0,0,640,480,[255,255,255])
text.each_with_index do |line,i|
msp.draw_solid_utf8(screen, line.chomp, 0,i*18,0,0,0)
end
screen.flip
loop do
while event = SDL::Event2.poll
case event
when SDL::Event2::Quit, SDL::Event2::KeyDown
exit
end
end
end
実行例(大きいのはこちら)。

ファイルをUTF-8で保存するのを忘れないように。
あと、WindowsをCドライブ以外にインストールした人はフォントのパスを適当に書き換えてください。 (Windowsが入ってるドライブをRubyから取得する方法ってないんかな?)
2006-07-15
■ [ruby] RubyText 0.1
Ruby勉強会@関西-11の最中に内職をして(ごめんなさい(^^;))、 RDやHikiDocフォーマットの 変換ツールをいじってました。
要するにrd2とhikidocをExerbで固めて、ドラッグ&ドロップで 起動できるようにしたものです。WindowsだといちいちDOS窓開くのも面倒なので作ってみました。
まだCSSの指定とか実装できてないので公開するか迷ったのですが、いまリリースしないと永遠に放置される 予感がしたのでとりあえず置いてみました。
今回の勉強会はExerbの作者であるyuyaさんがいらっしゃるということで、 実はExerbに関する質問をしたくて勉強会に参加したのですが、 新バージョンのExerb 4.0.0のマニュアル を読んでたら自己解決してしまったという(笑)。
あと突然Down!!が紹介されてびっくりした! あれから2作ほど新しいゲームを書いたのですが、それらも配布の際にExerbを利用させてもらってます。 ありがとうございます。
■ [ruby] Exerb化したexeの置かれているパスを取得する
したかった質問というのは、Exerb化したexeの実行中に、exeのフルパスを取得することはできるか?というものでした。 Rubyでは普通、Dir.pwd + $0 がスクリプトのフルパスになるんですが*1、 ドラッグ&ドロップでexeを起動するとカレントディレクトリが別のフォルダになってしまうのでした。
Exerb 4.0.0では、Exerb化したexeの実行時のみに定義されるExerbRuntimeというモジュール*2 を通して 実行ファイルのフルパスや、格納されたリソース/ファイルへのアクセスができるようになっています。
「exeと同じフォルダにあるconfig.rbを読み込む」という処理は、こんな風に書けます。
if defined? ExerbRuntime
conf_path = File.expand_path("config.rb", File.dirname(ExerbRuntime.filepath))
require conf_path
else
require 'config.rb'
end
□ ohai [PP.pp(a, '')で]