Code Monkey home page Code Monkey logo

guess-the-number-game's Introduction

Guess-the-number-game

🌱概要

数字当てゲーム

✨デモ

output

📝説明

このゲームは、数字当てゲームです。

ランダムに設定された数字を推測してゲームのクリアを目指します!

ユーザーは、最初に 最小値/最大値/入力回数の上限値 を設定する必要があります。

設定した情報をもとにゲームの難易度が変わります。

正解の数字は、最小値から最大値までの範囲内でランダムな数字が生成されます。

最初は、最小値と最大値の間隔を小さくして難易度をeasyにすることをオススメします!

基本的な機能としては、初期設定/入力された数字の判定/メッセージの表示ができます。

🧰前提条件

このゲームを実行するには、下記ソフトウェアを事前にインストールしておく必要があります。

インストールされていない場合は、インストール/使用方法/使用例で記載されているコマンドが実行できませんので

必ずインストールしてから進めてください。

Git

Gitがインストールされていない場合は、下記手順でインストールしてください。

  1. ターミナルを起動する。
    使用するOSによりターミナルの名称が異なりますので注意してください。
    (例. Windows:コマンドプロンプト,mac:ターミナル)

  2. Gitがインストールされているか確認する。
    git version 2.34.1 のように表示された場合は、Gitがインストールされています。
    以降の手順はスキップしてください。
    また、ターミナルは引き続き使用しますので開いたままにしてください!

git --version
  1. システムを更新する
sudo apt-get update
  1. Gitをインストールする
sudo apt install git
  1. Gitがインストールされたことを確認する。
    git version 2.34.1 のように表示されていれば、Gitのインストールは完了です!
git --version

Python 3.x

Pythonの公式サイトからあなたのPCのOSに合わせて、ダウンロードしてください。

ダウンロードしたファイルを使用してインストールできます。

Pythonがインストールされているかは、下記コマンドで確認することができます。

Python 3.10.12のように表示されていれば、Pythonはインストールされています。

python3 --version

🍴インストール

クローン

このゲームをあなたのPCで実行するために、クローンします。

クローンとは、このゲームの実行に必要なファイル(リポジトリのコンテンツ)をあなたのPCのローカル環境へコピーすることです。

下記手順でクローンしてください。

  1. リポジトリをクローンする
git clone https://github.com/Aki158/Guess-the-number-game.git
  1. クローンしたリポジトリへ移動する
cd Guess-the-number-game

🚀使用方法

  1. ゲームを起動する
  2. ゲームの難易度を設定する
  3. ゲームを遊ぶ
  4. ゲームを終了する

🙋使用例

一通りの手順のイメージはデモを参考にしてください。

  1. ゲームを起動する
python3 main.py
  1. ゲームの難易度を設定する。
    今回は、下記のように設定しました。
    • Please enter a minimum value (n) : 2
    • Please enter a maximum value (m) : 5
    • Choose a difficulty level between 0 and 2
      easy (Input : 0)
      medium(Input : 1)
      hard (Input : 2)
      Input : 0
  2. ゲームを遊ぶ。
    Enter a number between 2 and 5 : の後に正解の数字を推測しながら入力する。
    入力回数は、手順2.で設定した難易度によって変わります。
  3. ゲームを終了する。
    ゲームのクリアに関わらず、最後まで遊ぶとゲームが自動的に終了します。
    ゲームを途中でやめたくなった場合は、Ctrl + cを入力してください。

💾使用技術

カテゴリ 技術スタック
開発言語 Python
インフラ Ubuntu
VirtualBox
その他 Git
Github

👀機能一覧

image

機能 内容
メッセージの表示 ゲームを進行するために、必要な情報をターミナルに表示します。
難易度設定 下記情報をもとに、ゲームの難易度を決めます。
・Please enter a minimum value (n) :
・Please enter a maximum value (m) :
・Choose a difficulty level between 0 and 2
 easy (Input : 0)
 medium(Input : 1)
 hard (Input : 2)
 Input :
ランダムな数字の生成 難易度設定のminimum valueからmaximum valueまでの範囲内でランダムな数字が生成されます。
入力された数字の判定 入力された数字とランダムに設定された数字が一致しているか判定します。
入力回数の上限値設定 難易度設定のdifficulty levelにより入力回数の上限が下記のように決められます。
・easy : 5
・medium : 10
・hard : 15
入力回数のカウント 入力された数字を判定するたびに、+1カウントします。
ゲームの終了 下記条件に該当する場合は、ゲームが終了されます。
・入力された数字とランダムに設定された数字が一致した
・入力回数の上限に到達した

📜作成の経緯

下記項目の理解を深めるために作成しました。

  • データストリーム
  • ローカル開発環境の構築

⭐️こだわった点

データストリーム

データストリームとは、あらかじめ決められたサイズや長さのない大量のデータを、ある場所から別の場所に送ることです。

Pythonのsysライブラリを使用することで、Pythonプログラムでのデータの流れを制御することができます。

このゲームでは、文字列をバイナリデータとして扱うため、sysライブラリの下記関数を使用し、CLIからの入出力を制御しました。

関数名 使用例 内容
write() sys.stdout.buffer.write(b'Guess-the-number-game Start!\n') stdoutバッファにデータを直接書き込みます。
バイナリデータを使用したい場合に有効です。
flush() sys.stdout.flush() Pythonのプログラムに保存されている一時的なバッファのデータをクリアするために使用します。
フラッシュを行わない場合、Pythonのプログラムが終了するまでstdoutが表示されないことがあります。
readline() sys.stdin.buffer.readline() CLIに入力された文字を入力ラッパーを使わずに直接バッファに書き込むには、stdinを使用します。

ローカル開発環境の構築

ローカル開発環境の構築として、下記アプリケーションをインストールしセットアップしました。

各アプリケーションは、下記のような理由から採用しました。

アプリケーション 用途 採用理由
VirtualBox 仮想環境 ・直感的でわかりやすいGUI
・CPU、メモリ、ストレージなどのリソースを柔軟に割り当てできる
Ubuntu OS ・VirtualBox上にインストールできるLinuxベースのOSである
Virtual Studio Code コードエディタ ・実務での使用経験がある
・多くの言語をサポートしている
・拡張機能が充実している
・好みに合わせてカスタマイズできる
Git ソース管理 ・分散型バージョン管理システムであり、各開発者がローカルにリポジトリの完全なコピーを持つことができる。
・ブランチとマージの操作が簡単にできる

Pythonの対話型シェルの利用

対話型シェルは、小さなコードの断片を試したり、Pythonの構文や機能を試すために使用しました。

下記のような理由から対話型シェルを利用しました。

  • 開発が今回初めてのため、構文や機能を確認しながら進めたかった
  • プログラムのコード量が大きくなるとバグを見つけるのが困難になる可能性がある

GitとGitHubの利用

GitとGitHubを利用することでプロジェクトに関わるソースコードを管理しました。

開発時には、実務で使用することを想定して下記のようなコマンドを使用し、取り組みました。

コマンド名 用途
git clone リポジトリをコピー
git pull リモートリポジトリの変更点をローカルリポジトリにマージ
git push ローカルリポジトリの変更点をリモートリポジトリにマージ
git add コミット対象のファイルを登録
git commit 変更されたファイルをコミット(ローカルリポジトリに変更内容を入れ込む)
git status 作業ツリー内の差分ファイルを表示
git diff ファイル内の差分箇所を表示
git branch ブランチの作成/一覧表示
git switch ブランチの切り替え
git checkout 処理対象ブランチの切り替え

📮今後の実装したいもの

  • ユーザーの登録
  • セーブ機能の追加

📑参考文献

公式ドキュメント

参考にしたサイト

guess-the-number-game's People

Contributors

aki158 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.