トップ 最新 追記

Route 477



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

実行例(大きいのはこちら)。

sdl_aa_small.png

ファイルをUTF-8で保存するのを忘れないように。

あと、WindowsをCドライブ以外にインストールした人はフォントのパスを適当に書き換えてください。 (Windowsが入ってるドライブをRubyから取得する方法ってないんかな?)

本日のツッコミ(全1件) [ツッコミを入れる]

ohai [PP.pp(a, '')で]


2006-07-08

[ruby] PP.pp

現状のRubyでもできるというツッコミを頂きました。

本日のツッコミ(全1件) [ツッコミを入れる]

☆ ohai [PP.pp(a, '')で]
PP.pp(obj[, out[, width]])

   obj を out に幅 width で pretty print します。

そうか、outにはIOのサブクラスしか書けないと思いこんでて、わざわざStringIOとか使ってたんだっけ…。 単にStringで良かったんですね。


2006-07-15

[ruby] RubyText 0.1

Ruby勉強会@関西-11の最中に内職をして(ごめんなさい(^^;))、 RDHikiDocフォーマットの 変換ツールをいじってました。

要するに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

*1 なりますよね…?

*2 Exerb 3.3.1ではExerbというモジュールだったらしい