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/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)(このメソッドは互換性のために残されています。)
画面を表示します。
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 座標を取得、設定します。
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 座標を取得、設定します。