API リファレンス

komaba/array ライブラリ

checkpoint_a()

実行中にスペースキーを押すと、 chekcpoint_a 呼び出し箇所がある時点で一時停止します。

一時停止状態でさらにスペースキーを押すと、実行が再開されますが、再び checkpoint_a 呼び出し箇所で一時停止します。

一時停止状態でエンターキーを押すと、実行が通常通り再開します。

show(array)

配列 array を表示します。

1 から 3 次元配列に対応しています。

各要素は 0 から 1 の実数です。 1、 2 次元配列の場合は、白黒の度合いを表します。 3 次元配列の場合は 3 次元目がそれぞれ R、 G、 B を表します。

要素数がそろっていないとエラーになります。

関数名_CS(args, ...)

関数名の関数を実行し、コールスタックを表示します。

args に、関数実行時に渡す引数を指定します。

def fib(x)
  if x < 2
    1
  else
    fib(x - 1) + fib(x - 2)
  end
end

fib_CS(10)
show_call_stack(func_name, args ...) (deprecated)

(このメソッドは互換性のために残されています。)

関数 func_name を実行し、コールスタックを表示します。 関数名_CS と効果は同じです。

args に、関数実行時に渡す引数を指定します。

func_name は文字列 (またはシンボル) でなければなりません。 関数名をそのまま書いても正しく動きません。

def fib(x)
  if x < 2
    1
  else
    fib(x - 1) + fib(x - 2)
  end
end

show_call_stack(fib, 10) # fib を引数なしで実行してしまうことになり、エラーになる。
show_call_stack("fib", 10) # 正しくコールスタックが表示される。

実行時に表示される白い四角の中の文字列は、それぞれ引数、戻り値を表します。

show_object(obj)

任意のオブジェクト obj を可視化します。

配列の場合は (2 次元配列までですが) 箱状に表示します。 その他のオブジェクトは文字列として表示されます。

text(text, x, y)

文字列 text を座標 (x,y) に 描画します。

最後に表示されたウィンドウに描画されます。

komaba/mini_star ライブラリ

(今のところ) 人を表示したり動かしたりすることができる、 komaba/array とは独立したライブラリです。

Ruby プログラムの先頭行に以下を加えると使用できます。

require "komaba/mini_star"
include(Komaba::MiniStar)

関数

checkpoint()

実行中にスペースキーを押すと、 chekcpoint 呼び出し箇所がある時点で一時停止します。

一時停止状態でさらにスペースキーを押すと、実行が再開されますが、再び checkpoint 呼び出し箇所で一時停止します。

一時停止状態でエンターキーを押すと、実行が通常通り再開します。

halt()

画面を更新しつづける無限ループを実行します。

irb (isrb) ではなく ruby (rsdl) コマンドで実行する場合、 スクリプトの最後に書いておかないと、プログラム終了時に画面が自動的に閉じられてしまいます。

is_pressed(key)

関数が呼ばれた時点でキーボードのキー key が押されていたら true、それ以外の場合は false を返します。

key は文字列を指定します。指定できるキーは以下の通り。

"up" (上キー)
"left" (左キー)
"right" (右キー)
"down" (下キー)
"enter" (エンターキー)
"a" .. "z" (アルファベットキー)

Person クラスと組み合わせた使用例:

person = Person.new()

while true
  if is_pressed("up")
    person.y = person.y - 8
  end
  if is_pressed("down")
    person.y = person.y + 8
  end
  if is_pressed("left")
    person.x = person.x - 8
  end
  if is_pressed("right")
    person.x = person.x + 8
  end
  if is_pressed("enter")
    if person.is_raising_hand()
      person.lower_hand()
    else
      person.raise_hand()
    end
  end
  redisplay_all_objects()
end
show_classes()
hide_classes()

クラス図 (定義されているクラスのツリーおよびメソッド一覧) を 表示、非表示にします。

クラス図が表示されている間、呼ばれるメソッドはフラッシュします。

start() (deprecated)

(このメソッドは互換性のために残されています。)

画面を表示します。

Sprite クラス

display()

「何をどう描画するか」の処理が書かれるメソッドです。 Sprite クラスを継承したクラス側で再定義 (オーバーライド) する 必要があります。

このメソッドは内容が定義されていればいいのであって、 プログラマーが明示的に呼ぶ必要はありません。

paint_out(x, y, color)

display メソッドの中で使われるのを想定しています。

座標 (x, y) を起点に、 色 color で塗りつぶします。

redisplay_all_objects()

現在存在するすべての Sprite オブジェクトを再描画します。

display メソッドの中でこのメソッドを呼ぶと、 無限ループになる可能性があります。

render_circle(x, y, radius, color)

display メソッドの中で使われるのを想定しています。

中心座標 (x, y)、 半径 radius、 色 color の円を描画します。

render_filled_circle(x, y, radius, color)

display メソッドの中で使われるのを想定しています。

中心座標 (x, y)、 半径 radius、 色 color の塗りつぶされた円を描画します。

render_filled_rect(x, y, width, height, color)

display メソッドの中で使われるのを想定しています。

左上座標 (x, y)、 幅 width、 高さ height、 色 color の塗りつぶされた矩形を描画します。

render_filled_trapezoid(x, y, upper_width, lower_width, height, color)

display メソッドの中で使われるのを想定しています。

左上座標 (x, y)、 上底の幅 upper_width、 下底の幅 lower_width、 高さ height、 色 color の塗りつぶされた (等脚) 台形を描画します。

render_line(x1, y1, x2, y2, color)

display メソッドの中で使われるのを想定しています。

座標 (x1, y1) から 座標 (x2, y2) までを結ぶ 線分を描画します。

render_pixel(x, y, color)

display メソッドの中で使われるのを想定しています。

座標 (x, y) に 色 color の点を描画します。

render_rect(x, y, width, height, color)

display メソッドの中で使われるのを想定しています。

左上座標 (x, y)、 幅 width、 高さ height、 色 color の矩形を描画します。

render_text(text, x, y, size, color)

display メソッドの中で使われるのを想定しています。

文字列 text を、 座標 (x, y)、 文字の大きさ size、 色 color で描画します。

render_trapezoid(x, y, upper_width, lower_width, height, color)

display メソッドの中で使われるのを想定しています。

左上座標 (x, y)、 上底の幅 upper_width、 下底の幅 lower_width、 高さ height、 色 color の (等脚) 台形を描画します。

set_xy(x, y)

X 座標と Y 座標を同時に設定します。

s.x = 100
s.y = 200

s.set_xy(100, 200)

はほとんど同じですが、前者は二回再描画されるのに対して、 後者は一回だけ再描画されます。

x()
x=(x)

X 座標を取得、設定します。 Sprite クラス自体はこのメソッドと変数 @x を使っておらず、 子クラスで使われることを想定しています。 Y 座標も同様です。

y()
y=(y)

Y 座標を取得、設定します。

Person クラス

Sprite クラスを継承します。

Person.new()

Person オブジェクトを新規作成します。作成した時点で画面に人が表示されます。

color()
color=(color)

人の色を取得、設定します。

flash()
flash(time)
flash(time, color)

人を一定時間光らせます。

time には秒数を指定します。 color には色を RGB の配列で指定します。

time は省略時には 1, color は省略時には [1,0,0] となります。

height()
height=(height)

背の高さを取得、設定します。

hide()

人を非表示にします

is_raising_hand()

手を上げていたら true を、そうでない場合は false を返します。

is_visible()

表示状態ならば true を、そうでない場合は false を返します。

lower_hand()

手を下げます。

move(x, y)
move(x, y, options)

人を現在位置から (x, y) 座標に移動させます。

options で移動にかかる時間またはスピードを Hash オブジェクトで指定出来ます。

p = Person.new()
p.move(0, 0) # 省略可能
p.move(100, 100, :time => 5) # 5[s] かけて移動
p.move(200, 200, :speed => 100) # 100[px/s] の速度で移動

両方同時に指定した場合は :time を優先します。

raise_hand()

手を上げます。

show()

人を表示します。

x()
x=(x)

人の X 座標を取得、設定します。座標は人の足元の座標を表します。

y()
y=(y)

人の Y 座標を取得、設定します。

文責

情報理工学系研究科創造情報学専攻修士 2 年
48-076606 星一
<hajimehoshi at gmail.com>