2. 動かす
点を左から右へ動かします。
rb
▶ コンソールで開く# チュートリアル 2: 点を左から右へ動かす。
require 'adventure_board'
GC.start
matrix = AdventureBoard.matrix
x = 1
while true
matrix.clear
matrix.set(x, 8)
matrix.show
x += 1
x = 1 if 16 < x # 右端まで行ったら左端へ戻す
sleep_ms 100 # 0.1 秒待つ
end繰り返す
while true のループは自分では止まりません。止めるには、シミュレータなら「シミュレータをリセット」(Run をもう一度押すと、最初からやり直しになります)、 基板なら端末で Ctrl-C です。
繰り返しの中では、毎回「消す → 点ける → 送る」をしています。
ruby
matrix.clear
matrix.set(x, 8)
matrix.showclear を忘れると、前の点が残って線になります。試してみてください。
待つ
ruby
sleep_ms 100100 ミリ秒(0.1 秒)待ちます。これが無いと速すぎて、点が見えません。 数を小さくすると速く、大きくすると遅くなります。
跳ねるボール
x と y の両方を動かし、端に来たら向きを逆にすると、ボールが跳ね回ります。
rb
▶ コンソールで開く# チュートリアル 2: 跳ねるボール。端に来たら向きを変える。
require 'adventure_board'
GC.start
matrix = AdventureBoard.matrix
x = 1
y = 5
dx = 1 # 1 回に x がどれだけ動くか
dy = 1 # 1 回に y がどれだけ動くか
while true
matrix.clear
matrix.set(x, y)
matrix.show
x += dx
y += dy
dx = -dx if x <= 1 || 16 <= x # 左右の端に来たら向きを変える
dy = -dy if y <= 1 || 16 <= y # 上下の端に来たら向きを変える
sleep_ms 60
enddx と dy は「1 回にどれだけ動くか」です。
やってみよう
- ボールを 2 つにしてみましょう(
x2y2dx2dy2を作る) matrix.clearを消して、ボールの通った跡を残してみましょう