Star Ruby Ruby extension library for creating 2D games

Hello, World!

"Hello, World" と文字列表示するだけのプログラムを書きます。適当なテキストエディタを使って、 Ruby スクリプトを書きます。

ライブラリの require

require "starruby"
include StarRuby

starruby.so モジュールを require します。

また、StarRuby モジュールを include します。 StarRuby モジュール内に定義されたクラスを、モジュール名 (StarRuby::) をつけずに利用できるようにしたいためです。この行は必ずしも必要ではないです。

メインループ

require "starruby"
include StarRuby

Game.run(320, 240) do |game|
end

メインループを追加します。 Game.run メソッドを実行します。引数は画面のサイズ (幅および高さ) を表します。 Game.run メソッドで渡されたブロック (現在は空) が、毎フレーム (デフォルトで 1/30 秒) 実行されます。

このスクリプトを実行して、黒いウィンドウが出現すれば成功です。

実行画面

文字の描画

require "starruby"
include StarRuby

font = Font.new("MS UI Gothic", 12)
white = Color.new(255, 255, 255)

Game.run(320, 240) do |game|
  game.screen.clear
  game.screen.render_text("Hello, World!", 8, 8, font, white)
end

Font クラスは、その名前の通りフォントを表すクラスです。文字列描画の際に使用します。引数には、インストール済みのフォント名か TTF ファイルが指定できます。引数の数字は、フォントの大きさを表します。

Color クラスは、これも名前の通り色を表すクラスです。今回は文字列描画の際に使用します。 new メソッドの引数に、 RGB 値を渡しています。 255 が最大値で、すべて 255 ならば白色を表します。

game.screen は、画面の最終出力を保持するオブジェクトです。このオブジェクトに対して操作する (メソッドを呼び出す) ことによって、最終出力を操作します。

続いて、毎フレーム実行される処理の実装です。 Game.run メソッドに渡されたブロックが、毎フレーム実行されます。まず画面を消去します (game.screen に対して clear メソッドを呼び出します)。

さらに、画面に対して文字列を描画します。 render_text メソッドを呼び出します。 2 番目と 3 番目の引数は、描画位置 (X 座標と Y 座標) を表します。

実行して、黒い画面の上に白く "Hello, World!" と書かれていれば成功です。

実行画面

© Copyright 2010 Hajime Hoshi