こんにちは!
ENHANCERのPengです!
今回は、今まで二回にわたって紹介してきたPythonでハングマンを作ってみる企画の番外編となります!
前回の最後で、もっと面白くするためにはどうすればよいかを書きました。
ここではそのうちのいくつかをご紹介したいと思います!
目次
前回までのあらすじ
前回まででPythonで作るハングマンは完成しましたね。
前編ではハングマンの絵のリストを制作し、後編でゲームの進め方の根幹となるコードや、勝敗が決まった後のコードを書いたのでした。
前編↓
後編↓
ですが、皆さんは少し不便に感じたかもしれません。
せっかく作ったハングマンなのに、一回勝負がついたら終わってしまったり、Pythonを開かないと遊べなかったりと、まだまだ改善の余地はあったように思います。
そこで、今回の記事ではハングマンを何回も遊べるようにしたり、batファイルというファイル形式で保存してデスクトップから表示できるようにしたりしていきたいと思います!
番外編1:ハングマンを何回も遊べるようにする
先ほども言いましたが、、これまで紹介してきたハングマン、一度きりしか遊ぶことができません。
ハングマンを何回も遊んでみたくありませんか?
僕は何回でもハングマンで遊びたいです。
そんな願いを叶える工夫を追加していきましょう!
while文を追加して何回でも遊べるようにする。
ここでは、
「もう一度遊ぶ?遊ぶ場合はy、遊ばない場合はnを押してね!」
という文字をゲーム終了時に表示させて、何回も遊べるようにします。
例えばこんな感じ
def hangman2():
import random as ran
w = True
while w:
stages = ["",
"__________ ",
"| | ",
"| 0 ",
"| /|\ ",
"| / \ ",
"| "
]
wrong = 0
lis = ["cat", "dog", "penguin", "bird", "fish", "panda"]
num = ran.randint(0, 5)
word = lis[num]
correct = list(word)
board = ["_"] * len(word)
win = False
print("ハングマンへようこそ!")
while wrong < len(stages) - 1:
print("\n")
print(" ".join(board))
print("\n")
msg = "1文字を予想してね! ヒント:動物の名前"
char = input(msg)
if char in correct:
cind = correct.index(char)
board[cind] = char
correct[cind] = '$'
else:
wrong += 1
e = wrong + 1
print("\n".join(stages[0 : e]))
if "_" not in board:
print("あなたの勝ち!")
print(" ".join(board))
win = True
break
while win:
print("\n")
print("もう一度遊ぶ?")
m = input("遊ぶ場合はy、遊ばない場合はnを押してね!")
if m == "y":
break
elif m == "n":
w = False
break
else :
print("\n")
print("<<yかnを入力してね!>>")
win = True
if not win:
print("\n".join(stages[0 : wrong + 1]))
print("あなたの負け!正解は{}". format(word))
while not win:
print("\n")
print("もう一度遊ぶ?")
m = input("遊ぶ場合はy、遊ばない場合はnを押してね!")
if m == "y":
break
elif m == "n":
w = False
break
else :
print("\n")
print("<<yかnを入力してね!>>")
hangman2()
どこが変わっているか、皆さんお気づきでしょうか?
ここで変わっているのは、
- 最初にw = Trueと定義し、wがTrueである限りループが回るようにwhileを追加した。
- 遊ぶ場合と遊ばない場合の入力文字を受け取り、yの時は最初に戻るように、nの時はwをFalseにした。
- yかn以外の文字が入力されたときの表示文字を定義した。
の主に3点となっています!
ここでは条件文とwhile文がふんだんに活用されています。
if文は引数がTrueであるときに動作し、elif文でさらに条件分岐ができましたね。
if文、あるいはelif文がFalseの場合には、else文が動作します。
もし覚えていない場合は復習しましょう!
ここで使われているif文ではy(遊ぶ場合)の時に質問のwhile文をbreakしています。
質問のwhile文がbreakされたことによって冒頭のwhile文が動作し、また遊べるというわけですね!
そしてn(遊ばない場合)はyの時と同様質問のwhile文をbreakしていますが、ここで違うのは「w = False」としている点です。
冒頭のwhile文は「w = True」の時に動作し続けます。
ここで「w = False」とすることで、最初のwhile文を動作しないようにしているというわけです!
ここで使われたwhileやbreakについてはこの記事でわかりやすくまとめています!
そして忘れてはならないのがelse文。
ifにもelifにも属さなかった答えが入力されたときに動作するようにしています。
ここでは「<<yかnを入力してね!>>
」と表示させ、また質問のwhileループが動作するようにしています!
さあ!これで遊びたい分だけハングマンで遊べる準備が整いましたね!
答えの単語のリストは毎回ランダムに選ばれるので、リストを増やしておけば毎回別の単語で遊べるようになると思います!
番外編2:ハングマンをバッチファイルにして、いつでも遊べるようにする
番外編の二つ目です。
ここでは「bat(バッチ)ファイル」と呼ばれるファイルを作ります。
バッチファイルとは、Windows環境で実行できるコマンドを記述したテキストファイルのことで、これを使うとデスクトップから「.pyファイル」を呼び出すことができます。
それでは作り方を見ていきましょう!
Anaconda3をインストールする
今回作成するバッチファイルはAnaconda3で動作するファイルです。
ですので、Anaconda3をインストールする必要があります。
Anaconda3をインストールしていない方は以下の記事を参考にインストールを行ってください!!
ファイルを「.pyファイル」形式で保存する。
Anaconda3のインストール済んだでしょうか。
続いては、pythonのコードが書かれた動かしたいファイルを「.pyファイル」形式で保存していきます。
僕たちが推奨しているGoogle Colaboratoryでは、ファイルの拡張子が「.ipynb」というjupyter notebookで動作するファイルになっているため、「.pyファイル」にして一度ファイルを保存する必要があります。
Google Colaboratoryから「.pyファイル」をダウンロードするには、このようにして左上の「ファイル」から「.pyファイルをダウンロード」を選択する必要があります。
これでダウンロードできたら、恐らく「ダウンロード」などのフォルダに保存されているため、それを任意のフォルダに移動させてください。
batファイルを作成する
移動させたら、「メモ帳」を開き、以下のようにコードを書き込みます。
#hangman.pyを保存した場所のPATH
cd C:\Users\Documents
#Anacondaのactivate.batがある場所
call C:\Users\Anaconda3\Scripts\activate.bat
python hangman.py
最初の行では、Google Colaboratoryで「.pyファイル」をダウンロードして保存した場所のPATHを書き込みます。
ここではダウンロードした「.pyファイル」をUsersのDocumentsというフォルダに移動させたため、このように書いています。
次の行では、Anaconda3に入っている「activate.bat」というファイルがある場所のPATHを指定しています。
そして最後に動かしたいファイルの名前を入力します。
ここまでができたら、ファイルの拡張子を「.bat」に変えて、保存して下さい。
すると、バッチファイルとして保存され、それをクリックするとAnaconda Promptの画面からハングマンが遊べるようになります!!
おわりに
ハングマンの番外編、いかがだったでしょうか?
皆さんは今回の記事を読んで、ハングマンをもっと面白くしたいと思ったのではないでしょうか。
たとえば、世の中に存在するアスキーアートと呼ばれる文字で作ったアートを活用することによって、ハングマンの絵ではなく、そのようなアスキーアートの絵を表示させることだってできます。
さらに、文字をリスト化してランダムに答えが決まるようにしたのを応用して、出力されるハングマンの絵をいくつか用意しておいて、ランダムに表示させるようにしても面白そうです!
とにかく、Pythonやプログラミングを楽しんでみるということはとても大切なので、たまにはこういった息抜きも必要なのではないでしょうか。
皆さんが楽しみながらプログラミングを勉強していけるよう、ENHANCERは頑張っていきたいと思います!
今回用いたコードは毎度おなじみENHANCERのGitHubに挙げてありますので、以下のリンクから確認することができます!
Pythonで簡単なゲームを作ろう!(ハングマン)~番外編~
もしGitHubの使い方がわからなければ、こちらの記事にまとめてありますので、ご確認ください!
場合によってはGitHubでコードを見られなくなる時があります。
そんなときはGitHubからGoogle Colaboratoryに簡単に飛べる方法がありますので、こちらの記事からご確認ください!
それではまた次の記事でお会いしましょう!
お疲れ様でした!
ENHANCER Peng