Ruby練習問題1-☆1:数当てゲームを作ろう

記事内に商品プロモーションを含む場合があります

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-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でループを終了

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

# 数当てゲーム

# 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を活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Ruby練習問題集へ戻る
    トップページへ戻る