子どもRubyプログラミング講座「ロボット編」第8回

2014/03/17

piroko_jaran_ss~Time.now(タイムナウ)でジャストタイムゲームをやってみよう~

Time.now を使うと、現在時刻(げんざじこく)を調べることができます。今回はこれを利用して、ジャストタイムゲームをやってみましょう。

エディタに下のプログラムを入れて「動かす」ボタンをクリックしましょう。

t = Time.now
puts t

右側の「出力タブ」に、次のような表示が出ましたね。下の例は、2014年3月12日10時15分50秒を表しています。右はしの「+0900」は、日本の標準時間(ひょうじゅんじかん)であることを示しています。

2014-03-12 10:15:50 +0900

次に、alertTime.now を使ってストップウォッチを作ってみましょう。エディタに下のプログラムを入れて「動かす」ボタンをクリックしてください。

 alert "start"
 t1 = Time.now
 alert "stop"
 t2 = Time.now
 jikansa = t2 -t1
 puts jikansa

プログラムのせつめい

1行目

start(スタート)と書いてある四角い箱を出す。「OK」を押すと次の命令が動きます。

2行目

Time.nowで現在時刻(げんざいじこく)を調べて、t1という名前のついた箱に入れる。

3行目

stop(ストップ)と書いてある四角い箱を出す。「OK」を押すと次の命令が動きます。

4行目

Time.nowで現在時刻(げんざいじこく)を調べて、t2という名前のついた箱に入れる。

5行目

「t2 – t1」で、スタート時刻の t1 とストップ時刻の t2 の差(さ)を計算し、jikansa という名前のついた箱に入れる。

6行目

jikansa に入っている時刻の差を右側の出力タブに表示しなさい。

上のプログラムでは、右側の出力タブに「2.447204」のような7桁(けた)の数が表示されます。round を使えば、小数点以下(しょうすうてんいか)を四捨五入(ししゃごにゅう)して、整数(せいすう)に変えることができます。

上のプログラムの最後の行を次のように変えてみましょう。

puts jikansa.round

これで、「2」や「3」のような整数(せいすう)が表示されるようになります。

ヒント

四捨五入

4以下の数字を切りすて、5以上の数字を上の位(くらい)に切り上げることを四捨五入(ししゃごにゅう)といいます。たとえば、2.4 を四捨五入すると、4 を切りすてるので 2 になります。2.5 なら、5 を切り上げて 3 になります。

整数

…-3、-2、-1、0、1、2、3…というように、0から1ずつ増えたり減ったりしていってできる数のことを整数(せいすう)といいます。

ロボットを使ったジャストタイムゲームをやってみましょう。

alertでstart(スタート)とstop(ストップ)画面を出します。スタート画面で「OK」を押してから、ぴったり5秒後にストップ画面で「OK」ボタンを押せば正解(せいかい)。ロボットがピポパと鳴ります。

下のプログラムを入れて「動かす」ボタンをクリックしましょう。COM3の部分はペアリングの手順で調べた番号にしてくださいね。

require "mi100"

robo = Mi100.new "COM3"

alert "start"
 t1 = Time.now
 robo.good
 robo.spinr

alert "stop"
 t2 = Time.now

jikansa = t2 -t1
 puts jikansa.round

if jikansa.round == 5
 puts "maru"
 robo.good
 else
 puts "batu"
 robo.bad
 end

robo.close

プログラムのせつめい

1行目~3行目

ロボットを無線で動かせるようにするための、いつものステップですね。

5行目

startと書いてある四角い箱を出す。「OK」ボタンを押すと、次の命令が動きます。

10行目

stopと書いてある四角い箱を出す。「OK]ボタンを押すと、次の命令が動きます。

13行目

「t2 – t1」で、スタート時刻の t1 とストップ時刻の t2 の差(さ)を計算し、答えを jiikansa という名前の付いた箱に入れる。

14行目

jikansa に入っている数を整数にして、出力タブに表示しなさい。

16行目

時刻の差が5と同じなら、”maru” を表示し、ロボットはピポパと鳴る。5以外なら “batu” を表示し、ロボットはブーと鳴る。

おわり