Number Guessing Game(数当てゲーム)

Other

概要

このリポジトリは「Number Guessing Game」と名付けられた、Python製のシンプルな数当てゲームです。プログラムは1〜100までの乱数を生成し、プレイヤーはその数を推測します。難易度はEasy(10回)、Medium(6回)、Hard(4回)の三段階が用意されており、各入力に対して「より高い」「より低い」といったヒントが返されます。入力は1〜100の範囲でバリデーションされ、不正な入力時の再入力促進や、当てられなかった場合の再挑戦(リプレイ)機能も備えています。小規模で可読性の高いコード構成になっており、学習・教材用途や拡張のベースとして適しています。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 2
  • ファイル数: 4
  • メインの言語: Python

主な特徴

  • 三段階の難易度(Easy/Medium/Hard)に応じた残り試行回数の管理
  • 上/下のヒント表示と入力値のバリデーション(1〜100)
  • ASCIIアートでのビジュアル表現により遊び心を追加
  • リプレイ可能で、プログラムを再起動せずに続けられる UX

技術的なポイント

このプロジェクトはシンプルながら、実用的なプログラミングの基本を押さえています。乱数生成は標準ライブラリのrandomを用いており、実行ごとに異なるターゲット値を生成します。難易度選択はユーザー入力に基づく分岐で、選択に応じた試行回数(定数)をセットすることでゲームループ内での制限を実現しています。入力処理では数値への変換と範囲チェック(1〜100)を行い、例外的な入力や文字列入力に対して再入力を促すことでユーザー体験を保っています。ヒント判定は単純な比較(guess < target →「高い」, guess > target →「低い」)で行われ、ループの制御はカウントダウン方式または残り試行回数の減算で実装されています。コードはascii_art_guessing_game.pyとguessing_game_app.pyに分かれており、ASCIIアートを独立したモジュールにしている点は、プレゼンテーションロジックとゲームロジックの分離という観点で良好です。改善の余地としては、関数の明確な分割(入力取得・検証・ゲームステート更新・表示)や型ヒントの追加、ログ出力やユニットテストの導入が挙げられます。また、CLI引数で難易度やシードを受け取れるようにすれば自動テストやデモの再現性が向上します。将来的にはスコアリングやハイスコア保存(ファイル/SQLite)、GUI化(TkinterやPySimpleGUI)などの拡張も容易に行えます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitattributes: file
  • README.md: file
  • ascii_art_guessing_game.py: file
  • guessing_game_app.py: file

まとめ

初心者向けの良くまとまった数当てゲームで、学習教材や拡張用のベースとして最適です。(約50字)

リポジトリ情報:

READMEの抜粋:

Number Guessing Game

A Python number guessing game where the player tries to guess a randomly chosen number between 1 and 100. This beginner-friendly project includes multiple difficulty levels, input validation, and fun ASCII art for visuals.

Features

  • Three difficulty levels:
    • Easy – 10 guesses
    • Medium – 6 guesses
    • Hard – 4 guesses
  • Gives hints whether to guess higher or lower.
  • Input validation for numbers between 1 and 100.
  • Replayable without restarting th…