数当てゲーム

random 関数を使用して簡単な「数当てゲーム」を作成します。プログラムが1から100までのランダムな数字を選び、ユーザーがその数字を当てるというシンプルなゲームです。


はじめに

HI Engineer Collegeでは、実務未経験のエンジニアの方や、エンジニアに興味がある方を募集したおります、まずはお気軽にお問い合わせください。

※ (株)G&T(【内々定まで最短2週間】ゼロからしっかりじっくり研修☆20代活躍中!)

https://qiita.com/embed-contents/link-card#qiita-embed-content__1924ca10fcd5bcff4246c8ded5204c8e

※ HI Engineer Collegeに興味あがある方はこちら(プログラミングを学習したい方)

https://qiita.com/embed-contents/link-card#qiita-embed-content__17ce21e4e4bb020a58a57edbf965c75a


エンジニア向けチャットルーム「TechTalk」参加者募集中!

プログラミングやITの話題を気軽に共有し、学び合えるエンジニアのためのチャットルーム「TechTalk」では、新たな参加者を募集中です!

こんな方にオススメです

  • 最新技術の動向やトレンドを追いかけたい
  • 日々の開発で生じる疑問を他のエンジニアに相談したい
  • コードレビューの方法やデバッグのコツを知りたい
  • 他のエンジニアと共に成長できる場を探している

チャットルームで扱う主なトピック

  • プログラミング: JavaScript、Python、Javaなど、言語やフレームワークについて
  • 開発ツール: Git、Docker、CI/CD の自動化など
  • キャリア: 転職やキャリアパス、業界動向
  • AI/機械学習: モデルの開発やトレンド
  • Webセキュリティ: セキュリティ対策や最新の脅威情報

チャットルームの特徴

  • 他のエンジニアからリアルタイムでフィードバックがもらえます
  • 勉強会やハンズオンセッションも定期開催
  • 初心者から上級者まで、幅広いレベルのエンジニアが在籍
  • リモートワーク時のちょっとした相談や雑談も大歓迎

参加方法
下記リンクから「TechTalk」へぜひご参加ください。

https://qiita.com/embed-contents/link-card#qiita-embed-content__d5d027b0d51555af66580f3d92dc3f55



ゲームのルール

  1. プログラムが1から100の間でランダムな数字を選びます。
  2. ユーザーはその数字を当てるまで繰り返し入力します。
  3. ユーザーが入力した数字が正解よりも大きいか小さいかをヒントとして表示します。
  4. ユーザーが正解すれば、ゲームが終了します。

コード例:

import random

# 1から100の間でランダムな数を生成
correct_number = random.randint(1, 100)
attempts = 0  # ユーザーの試行回数をカウント

print("1から100の数字を当ててください。")

while True:
    # ユーザーの入力を取得
    user_input = input("数字を入力してください: ")
    
    try:
        # 入力された値を整数に変換
        guess = int(user_input)
        attempts += 1  # 試行回数を1増やす

        # 数字を判定して結果を表示
        if guess < correct_number:
            print("もっと大きい数字です。")
        elif guess > correct_number:
            print("もっと小さい数字です。")
        else:
            print(f"おめでとう!正解です!{attempts}回目で当たりました。")
            break

    except ValueError:
        # 整数に変換できない場合のエラーメッセージ
        print("エラー: 数字を入力してください。")

解説:

  1. ランダムな数字の生成
    • random.randint(1, 100) を使用して、1から100の範囲でランダムな整数を生成し、correct_number に格納します。
  2. ループと入力の処理
    • while True で無限ループを作成し、ユーザーが正解を当てるまで続けます。
    • ユーザーが数字を入力し、それを整数に変換します。変換に失敗した場合はエラーメッセージを表示し、再入力を求めます。
  3. ヒントを表示
    • ユーザーの入力が正解よりも小さい場合、「もっと大きい数字です」と表示。
    • ユーザーの入力が正解よりも大きい場合、「もっと小さい数字です」と表示。
  4. 正解した場合
    • 正解であれば、試行回数と共にお祝いのメッセージを表示してゲームを終了します。

実行例:

1から100の数字を当ててください。
数字を入力してください: 50
もっと小さい数字です。
数字を入力してください: 25
もっと大きい数字です。
数字を入力してください: 30
もっと小さい数字です。
数字を入力してください: 28
おめでとう!正解です!4回目で当たりました。


じゃんけんゲーム

random 関数を使用した「じゃんけんゲーム」ユーザーがじゃんけんをして、勝ち負けを判定するゲームです。


ゲームのルール

  1. プログラムがランダムで「グー」「チョキ」「パー」から1つを選びます。
  2. ユーザーが「グー」「チョキ」「パー」のいずれかを入力します。
  3. プログラムが勝ち負けを判定し、結果を表示します。
  4. ユーザーが「終了」と入力するまで何度もプレイできます。

コード例:

import random

# 選択肢リスト
choices = ["グー", "チョキ", "パー"]

print("じゃんけんゲームを始めます!「グー」「チョキ」「パー」を入力してください。終了するには「終了」と入力してください。")

while True:
    # コンピュータの手をランダムに選ぶ
    computer_choice = random.choice(choices)
    
    # ユーザーの手を入力してもらう
    user_input = input("あなたの手: ")
    
    # ゲーム終了の確認
    if user_input == "終了":
        print("ゲームを終了します。")
        break
    
    # ユーザーの入力が正しいかチェック
    if user_input not in choices:
        print("エラー: 「グー」「チョキ」「パー」のいずれかを入力してください。")
        continue

    # 結果の表示
    print(f"コンピュータの手: {computer_choice}")
    
    # 勝敗の判定
    if user_input == computer_choice:
        print("引き分けです!")
    elif (user_input == "グー" and computer_choice == "チョキ") or \
         (user_input == "チョキ" and computer_choice == "パー") or \
         (user_input == "パー" and computer_choice == "グー"):
        print("あなたの勝ちです!")
    else:
        print("コンピュータの勝ちです!")

解説:

  1. コンピュータの手の選択
    • random.choice(choices) を使って、コンピュータが「グー」「チョキ」「パー」からランダムに1つを選びます。
  2. ユーザーの入力と終了条件
    • ユーザーに「グー」「チョキ」「パー」のいずれかを入力してもらい、if user_input == "終了" で終了条件を判定します。
    • ユーザーの入力が正しくない場合は、エラーメッセージを表示して再度入力を求めます。
  3. 勝敗の判定
    • ユーザーとコンピュータの手を比較して、引き分け、ユーザーの勝ち、コンピュータの勝ちのいずれかを判定します。
    • or を使って、じゃんけんの勝利条件を設定しています。

実行例:

じゃんけんゲームを始めます!「グー」「チョキ」「パー」を入力してください。終了するには「終了」と入力してください。
あなたの手: グー
コンピュータの手: チョキ
あなたの勝ちです!
あなたの手: パー
コンピュータの手: グー
あなたの勝ちです!
あなたの手: チョキ
コンピュータの手: チョキ
引き分けです!
あなたの手: 終了
ゲームを終了します。