おひとりさまプログラミング

無料で学べるブログラミング学習サイト

Ruby講座|第4回 おみくじゲーム「想定外の入力があった場合」

皆さん、こんにちは。

しょうとく(@syoucha0107)と申します。

普段は社内SEとして働く身であり、
Rubyを普段活用することはないのですが、
手軽にプログラミングを楽しむには
やはり最適な言語で、好みの言語の一つです。

それでは第一回目の投稿の中身は・・・

おみくじゲームです!


テキストによく採用されるサンプルですが、
「想定外の入力があった場合」を仮定して
作成してみました。

Ruby初学者の方の参考になれば幸いです。
まだ数回ほどRubyの記事は予定してます。
是非また見にきていただければと思います。

まず作るにあたり上から順番に
どんな必要となってくるか書いてみました。

f:id:sayo0425tan:20200821182935p:plain

・”おみくじだよ。1から5の好きな数字を入れてね。”
→表示はputsで記述します。

・ユーザーからの入力を促す。
→入力値を受け取るコードを記述。

・受け取った数字で、くじの結果を返す。
→数字によって処理を分岐させる。

・想定外の入力は入力をやり直し。


今回のポイントは入力のやり直しですね。
これをどのように実現させるか・・・。

入力のやり直しは後回しにして
まずは入力値の受け取り、
それぞれの入力値で異なるくじの結果を
表示させることをやってみましょう。

puts "おみくじだよ。1から5の好きな数字を入れてね。"

number = gets.to_i

if number == 1
	puts "大吉"
elsif number == 2
	puts "中吉"
elsif number == 3
	puts ""
elsif number == 4
	puts ""
elsif number == 5
	puts "大凶"
else
	puts "1から5以外は入力しないでね。もう1回"
end

想定外の入力があった時にやり直しをさせるには

f:id:sayo0425tan:20200821183407p:plain

皆さんはどのようにお考えになったでしょうか。おそらく上記の画像の赤字に記載した”1から5以外は入力しないでね。もう1回”の下に何かしらの記述をすることで解決できるのではと、考えた方もおられると思います。

ここで検索エンジンでひたすらに調べて答えを出す必要があります。

私なりの答えを出しますと、loopを使ってコードの全体を囲い、想定内の答えが入力されたときは、breakで処理を中断させ、想定外のときはループを発生させることで解決させました。

loop do
   puts "おみくじだよ。1から5の好きな数字を入れてね。"

   number = gets.to_i

   if number == 1
       puts "大吉"
       break
   elsif number == 2
       puts "中吉"
       break
   elsif number == 3
       puts ""
       break
   elsif number == 4
       puts ""
       break
   elsif number == 5
       puts "大凶"
       break
   else
       puts "1から5以外は入力しないでね。もう1回"
   end
end

あくまでこれは一例に過ぎません。While文で違った記述をしても良いでしょうし、色々な記述の仕方が想定されます。

これまでの手順をyoutubeで公開してます。動画でもぜひ学習してみてください。

youtu.be

いかがでしたでしょうか。テキストなどでRubyを勉強するとき、コードをそのまま書き写したりすることも大事ですが、こんな場合はどのような記述になるのか、疑問に思ったら調べて回答を導き出す行為も、非常に力がつきますのでぜひ試してくださいね。