Rubyの初心者向け問題1-☆1:数当てゲームゲームを作ろう
この問題を解くために必要な知識:
【レベル1の知識】
コメントの書き方、変数と定数、基本データ型、四則演算と演算子、入力と出力、文字列操作、分岐処理(if、if~else、elsif、case)、繰り返し処理(for、while、until、each)、範囲(Range)、例外処理(begin-rescue-end)、
<<前の問題 | 問題集Top |
次の問題>> |
Ruby練習問題1-☆1:数当てゲームを作ろう
1から100までのランダムな数を生成し、プレイヤーがその数を当てる「数当てゲーム」を作成しましょう。
プレイヤーが数を推測し、正解するまで大きいか小さいかをヒントとして表示します。
プレイヤーが正しい数を当てたら、ゲームを終了させるようにします。
この問題の要件
以下の要件に従ってコードを完成させてください。
rand(1..100)
を使用して、1から100までのランダムな数を生成すること。puts
を使ってゲームの開始メッセージと説明を表示すること。while
文を使って、プレイヤーが正解するまで繰り返し処理を行うこと。- プレイヤーの入力を
gets.to_i
で取得し、その値がランダムな数より小さい場合は「もっと大きい数です」、大きい場合は「もっと小さい数です」と表示すること。 - プレイヤーが正しい数を当てた場合は「おめでとうございます!正解です。」と表示し、ループを終了すること。
ただし、以下のような実行結果となること。
----- ↓出力される結果の例↓ -----
数当てゲームへようこそ! 1から100までの数を当ててください。 あなたの推測: 50 もっと大きい数です。 あなたの推測: 75 もっと小さい数です。 あなたの推測: 60 もっと大きい数です。 あなたの推測: 65 もっと小さい数です。 あなたの推測: 63 もっと大きい数です。 あなたの推測: 64 おめでとうございます!正解です。
----- ↑出力される結果の例↑ -----
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
正解のコードは上から順に以下のような構成となっています。
1.乱数の生成とゲーム開始メッセージの表示
1-1. rand(1..100)
で1から100までのランダムな数を生成し、target_number
に格納
1-2. ゲーム開始メッセージ「数当てゲームへようこそ!」および「1から100までの数を当ててください。」をputs
で表示
2.無限ループでプレイヤーの推測を受け取る
2-1. while true
で無限ループを開始
2-1-1. print
で「あなたの推測:」と表示し、gets.to_i
でプレイヤーの推測をguess
に格納
3.推測に基づいた条件分岐
3-1. if
文でプレイヤーの推測とtarget_number
を比較
3-1-1. プレイヤーの推測がtarget_number
より小さい場合、puts
で「もっと大きい数です。」と表示
3-1-2. プレイヤーの推測がtarget_number
より大きい場合、puts
で「もっと小さい数です。」と表示
3-1-3. プレイヤーの推測がtarget_number
と一致した場合、puts
で「おめでとうございます!正解です。」と表示し、break
でループを終了
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
# 数当てゲーム # 1から100までのランダムな数を生成 =begin 【穴埋め問題1】 ここにrand(1..100)を使ってランダムな数を生成し、target_numberに代入するコードを書いてください。 =end # ゲーム開始のメッセージを表示 puts "数当てゲームへようこそ!" puts "1から100までの数を当ててください。" # プレイヤーが正しい数を当てるまで繰り返す while true # プレイヤーの推測を入力として受け取る print "あなたの推測: " guess = gets.to_i # プレイヤーの推測と目標の数を比較 =begin 【穴埋め問題2】 ここにif文でプレイヤーの推測がtarget_numberより小さい、大きい、または等しいかを判定し、適切なメッセージを表示するコードを書いてください。 =end end
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
解答例と解説
この問題の一つの正解例とそのコードの解説を以下に示します。
正解コードの例
例えば以下のようなプログラムが考えられます。
********************
# 数当てゲーム # 1から100までのランダムな数を生成 target_number = rand(1..100) # ゲーム開始のメッセージを表示 puts "数当てゲームへようこそ!" puts "1から100までの数を当ててください。" # プレイヤーが正しい数を当てるまで繰り返す while true # プレイヤーの推測を入力として受け取る print "あなたの推測: " guess = gets.to_i # プレイヤーの推測と目標の数を比較 if guess < target_number puts "もっと大きい数です。" elsif guess > target_number puts "もっと小さい数です。" else puts "おめでとうございます!正解です。" break end end
********************
コードの解説
この数当てゲームでは、プレイヤーが1から100までのランダムな数を推測し、その数を当てるまで繰り返し入力を行います。
プログラム内で使われている文法とその動作について、以下で詳しく説明します。
乱数の生成とゲーム開始メッセージの表示
target_number = rand(1..100) puts "数当てゲームへようこそ!" puts "1から100までの数を当ててください。"
rand(1..100)
は、1から100までのランダムな整数を生成するメソッドです。
この乱数をtarget_number
という変数に格納し、プレイヤーに推測させます。
次に、puts
を使ってゲームの説明と開始メッセージを表示します。
プレイヤーの入力を受け取る部分
while true print "あなたの推測: " guess = gets.to_i
while true
は、無限ループを開始する構文です。このループは、プレイヤーが正しい数を当てるまで繰り返されます。
print
で「あなたの推測:」と表示し、gets.to_i
でプレイヤーの入力を受け取って数値に変換します。
推測に基づいた条件分岐
if guess < target_number puts "もっと大きい数です。" elsif guess > target_number puts "もっと小さい数です。" else puts "おめでとうございます!正解です。" break end
プレイヤーが入力したguess
が、生成されたtarget_number
より小さいか、大きいかをif
文で判断します。
if guess < target_number
の条件が真であれば、「もっと大きい数です。」と表示し、逆に大きければ「もっと小さい数です。」と表示します。
もしプレイヤーが正しい数を当てた場合、else
ブロックに入り、「おめでとうございます!正解です。」と表示されます。
その後、break
文によって無限ループを終了します。
まとめ
この数当てゲームでは、繰り返し処理や条件分岐を使って、プレイヤーが正解にたどり着くまでゲームが続きます。
rand
による乱数生成とif-else
構文を使った条件分岐が、ゲームの基本的な仕組みとなっています。
Rubyの基本的な文法を理解しながら楽しめるシンプルなゲームです。
<<前の問題 |
問題集Top |
次の問題>> |
この問題への質問・コメント
この問題を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。