〜じゃんけんゲームをしよう~(rand)
今回はロボットとじゃんけんゲームをしてみましょう。rand(ランド)を使います。
エディタに次のプログラムを入れて「動かす」ボタンを押してみましょう。
puts rand(3)
0、1、2のいずれかが出力タブに表示されましたね。
randはランダムな数(でたらめな数)を発生(はっせい)させる命令。randのうしろにある( )の中に数を入れて、発生する数の範囲(はんい)を指定します。上の場合は、0から数えて3番目まで、つまり0、1、2のいずれかが生成(せいせい)されます。
10回繰り返して、指定した範囲の数しか出力されないことを確認しましょう。
10.times do puts rand(3) end
確認できましたか?0、1、2がランダムに10回、出力されましたね。
次に、randを使って発生させた1~3の数を、case~whenでグーチョキパーにあてはめてみましょう。「rand(3) + 1」にすれば、発生する数は1、2、3のいずれかになりますね。
r = rand(3) + 1 case r when 1 puts "ロボットはグー" when 2 puts "ロボットはチョキ" when 3 puts "ロボットはパー" end
プログラムのせつめい
1行目
randで0、1、2のいずれかの数をランダムに生成し(rand(3))、それに1を加え(+1)、rという名前のついた箱に入れなさい。
3行目
rという名前のついた箱に入っている数が、次の条件と一致(いっち)するか調べなさい。
4行目
rという名前のついた箱に入っている数が1のときは、次の行の命令に進みなさい。そうでないなら、次のwhenに進みなさい。
6行目
2のときは、次の行の命令に進みなさい。そうでないなら、次のwhenに進みなさい。
8行目
3のときは、次の行の命令に進みなさい。
ロボットで動きを確認しよう
ロボットとじゃんけんゲームをしてみましょう。自分が出したグーチョキパーとロボットが出したグーチョキパーを入れる箱を用意し、それぞれに入っている数をくらべて勝ち負けを決めます。askとcase~whenを使うよ。勝ったときや負けたとき、ロボットはどんな動きをするかな。好きな動きをさせてみよう。
require "mi100" robo = Mi100.new "COM3" puts "じゃんけん" puts "" j = ask "1:グー 2:チョキ 3:パー" unless (j == 1 or j == 2 or j == 3) puts "グーチョキパーをえらんでね" end r = rand(3) + 1 case r when 1 puts "ロボットはグー" case j when 1 puts "引き分け" when 2 puts "ロボットの勝ち" robo.good when 3 puts "君の勝ち" robo.bad end when 2 puts "ロボットはチョキ" case j when 1 puts "君の勝ち" robo.bad when 2 puts "引き分け" when 3 puts "ロボットの勝ち" robo.good end when 3 puts "ロボットはパー" case j when 1 puts "ロボットの勝ち" robo.good when 2 puts "君の勝ち" robo.bad when 3 puts "引き分け" end end robo.close
プログラムのせつめい
1行目~3行目
ロボットを無線で動かせるようにするための、いつものステップですね。
5行目~6行目
出力タブに「じゃんけん」と表示し、””で空白行を入れます。
8行目
「1:グー 2:チョキ 3:パー」と書いてある四角い箱を出し、そこに入れた数をjという名前のついた箱に入れなさい。
9行目~11行目
見なれない命令が出てきましたね。unless(アンレス)はifの反対。「もしも~でないなら」という意味。もしも、jに入っている数が、1でも2でも3でもないなら、「グーチョキパーをえらんでね」と表示しなさい。
13行目
1、2、3のいずれかをランダムに生成して1を加え、rという名前のついた箱に入れなさい。
15行目
rという名前のついた箱に入っている数が次の条件と一致するか調べなさい。
17行目
rという名前のついた箱に入っている数が1のときは、次の行に進みなさい。1ではないなら、次のwhen(30行目)に進みなさい。
19行目
jという名前のついた箱に入っている数が次の条件と一致するか調べなさい。
20行目
jという名前のついた箱に入っている数が1のときは、次の行に進みなさい。1ではないなら、次のwhen(22行目)に進みなさい。
22行目
jという名前のついた箱に入っている数が2のときは、次の行に進みなさい。2ではないなら、次のwhen(25行目)に進みなさい。
25行目
jという名前のついた箱に入っている数が3のときは、次の行に進みなさい。
大きいケース(case r)の中に小さいケース(case j)が入っていることに注目してください。ロボットがグーのとき(case rのwhen 1)、自分が出すのはグー、チョキ、パーの3通りですね。その勝敗を、case jのwhen 1、2、3で決めています。
おわり