数字当てゲーム
このゲームは、数字当てゲームです。
ランダムに設定された数字を推測してゲームのクリアを目指します!
ユーザーは、最初に 最小値/最大値/入力回数の上限値 を設定する必要があります。
設定した情報をもとにゲームの難易度が変わります。
正解の数字は、最小値から最大値までの範囲内でランダムな数字が生成されます。
最初は、最小値と最大値の間隔を小さくして難易度をeasyにすることをオススメします!
基本的な機能としては、初期設定/入力された数字の判定/メッセージの表示ができます。
このゲームを実行するには、下記ソフトウェアを事前にインストールしておく必要があります。
インストールされていない場合は、インストール/使用方法/使用例で記載されているコマンドが実行できませんので
必ずインストールしてから進めてください。
Gitがインストールされていない場合は、下記手順でインストールしてください。
-
ターミナルを起動する。
使用するOSによりターミナルの名称が異なりますので注意してください。
(例. Windows:コマンドプロンプト,mac:ターミナル) -
Gitがインストールされているか確認する。
git version 2.34.1
のように表示された場合は、Gitがインストールされています。
以降の手順はスキップしてください。
また、ターミナルは引き続き使用しますので開いたままにしてください!
git --version
- システムを更新する
sudo apt-get update
- Gitをインストールする
sudo apt install git
- Gitがインストールされたことを確認する。
git version 2.34.1
のように表示されていれば、Gitのインストールは完了です!
git --version
Pythonの公式サイトからあなたのPCのOSに合わせて、ダウンロードしてください。
ダウンロードしたファイルを使用してインストールできます。
Pythonがインストールされているかは、下記コマンドで確認することができます。
Python 3.10.12
のように表示されていれば、Pythonはインストールされています。
python3 --version
このゲームをあなたのPCで実行するために、クローンします。
クローンとは、このゲームの実行に必要なファイル(リポジトリのコンテンツ)をあなたのPCのローカル環境へコピーすることです。
下記手順でクローンしてください。
- リポジトリをクローンする
git clone https://github.com/Aki158/Guess-the-number-game.git
- クローンしたリポジトリへ移動する
cd Guess-the-number-game
- ゲームを起動する
- ゲームの難易度を設定する
- ゲームを遊ぶ
- ゲームを終了する
一通りの手順のイメージはデモを参考にしてください。
- ゲームを起動する
python3 main.py
- ゲームの難易度を設定する。
今回は、下記のように設定しました。- 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
- Please enter a minimum value (n) :
- ゲームを遊ぶ。
Enter a number between 2 and 5 :
の後に正解の数字を推測しながら入力する。
入力回数は、手順2.で設定した難易度によって変わります。 - ゲームを終了する。
ゲームのクリアに関わらず、最後まで遊ぶとゲームが自動的に終了します。
ゲームを途中でやめたくなった場合は、Ctrl + c
を入力してください。
カテゴリ | 技術スタック |
---|---|
開発言語 | Python |
インフラ | Ubuntu |
VirtualBox | |
その他 | Git |
Github |
機能 | 内容 |
---|---|
メッセージの表示 | ゲームを進行するために、必要な情報をターミナルに表示します。 |
難易度設定 | 下記情報をもとに、ゲームの難易度を決めます。 ・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の構文や機能を試すために使用しました。
下記のような理由から対話型シェルを利用しました。
- 開発が今回初めてのため、構文や機能を確認しながら進めたかった
- プログラムのコード量が大きくなるとバグを見つけるのが困難になる可能性がある
GitとGitHubを利用することでプロジェクトに関わるソースコードを管理しました。
開発時には、実務で使用することを想定して下記のようなコマンドを使用し、取り組みました。
コマンド名 | 用途 |
---|---|
git clone | リポジトリをコピー |
git pull | リモートリポジトリの変更点をローカルリポジトリにマージ |
git push | ローカルリポジトリの変更点をリモートリポジトリにマージ |
git add | コミット対象のファイルを登録 |
git commit | 変更されたファイルをコミット(ローカルリポジトリに変更内容を入れ込む) |
git status | 作業ツリー内の差分ファイルを表示 |
git diff | ファイル内の差分箇所を表示 |
git branch | ブランチの作成/一覧表示 |
git switch | ブランチの切り替え |
git checkout | 処理対象ブランチの切り替え |
- ユーザーの登録
- セーブ機能の追加