Skip to content

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.show

clear を忘れると、前の点が残って線になります。試してみてください。

待つ ​

ruby
  sleep_ms 100

100 ミリ秒(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
end
▶ コンソールで開く

dx と dy は「1 回にどれだけ動くか」です。

やってみよう

  • ボールを 2 つにしてみましょう(x2 y2 dx2 dy2 を作る)
  • matrix.clear を消して、ボールの通った跡を残してみましょう