この記事の目的は、"Guess the Number Game"、プログラムがランダムに数字を選び、プレイヤーがランダムに数字を当てるゲームをどのようにPythonで生成するか紹介するのが主旨だ。
まずは、初期設定をする。
まずは、randomモジュールからrandint関数を使い、
指定された範囲内のランダムな整数を生成することができる。
次に、artというモジュールから、clear関数をimportする。
ランダムに数字を選ぶのは、ユーザーにとって至難の技であるため、
今回私は、レベルを5つ設けた。
Supereasyレベル: ユーザーが50回数字を失敗するまで、ゲームオーバーにならない。
Easyレベル: ユーザーが20回数字を失敗するまで、ゲームオーバーにならない。
Mediumレベル: ユーザが10回数字を失敗するまで、ゲームオーバーにならない。
Hardレベル: ユーザーが7回数字を失敗するまで、ゲームオーバーにならない。
Superhardレベル: ユーザーが5回数字を失敗するまで、ゲームオーバーにならない。
ユーザーの推測と実際の数値を比較し、その結果を出力する
まず、"check answer"という関数を定義。この関数は、guess(ユーザーが推測した値), answer(プログラムが実際に生成した答え)を比較する。
そして、guessが、answerよりも高い場合は、"Too High"とprint
また、 guessがanswerよりも低い場合は、"Too Low"とprint
ユーザが、実際の数値を的中した場合、"You got it! The answer was 実際の数値"とprint
5つのレベルの中から、ユーザーにレベルを選択させる
まず、"set_difficulity"という関数を定義。そして、ユーザーに5つのレベルを選択させる。
そして、"game" という関数を定義させ、logoをprintする。
ユーザーに1から1000の数字を選択させる
まず、プログラムは、"Welcome to the Number Guessing Game", "I'm thinking of a number between 1000"と表示される。その後、プログラムが、ランダムに1から1000の範囲内の数値を選び、ユーザーはその数値を自分が選んだ5つのレベルの中から残されたライフの中で、的中しないといけない。
1. まず、ユーザーの推測を格納するための変数"guess"を0に初期化する。
guess = 0
2. "guess"が"answer"と異なる限り、以下のプロックを繰り返します。
while guess != answer:
3. ユーザーに残りの試行回数を表示
turns = check_answer(guess, answer, turns)
4. ユーザーに数値を入力させ、その入力を整数に変換して"guess"に格納
guess = int(input("Make a guess:"))
5. 試行回数の追跡と減少
turns = check_answer(guess, answer, turns)
check_answer関数を呼び出して、ユーザーの推測をチェックし、残りの試行回数を更新します。この関数は、ユーザーの推測が正しいかどうかを判断し、間違っていれば試行回数を1減らします。
6. 試行回数が0になった場合の処理
if turns == 0:
print("You've run out of guesses, you lose.")
print(f"The correct number is {answer}")
return
試行回数が0になった場合、ユーザーにゲームオーバーを知らせ、正しい答えを表示して関数を終了。
7. 再度推測を促す
elif guess != answer:
print("Guess again.")
ユーザーの推測が正しくない場合、再度推測を促すメッセージを表示
8. ゲーム開始
game()
game関数が定義され、それを呼び出してゲームを開始することができる。
これだけではわからないと思うので、実際にSuperhard Levelを遊んでいるところを添付しておく。
まず、私は以下の写真のように、275と予測した。しかし、パソコンが、"Too high"と回答した。これで、私の残りのライフ数が、5から4へと減った。
173 と予測したが、またもや”Too High"と回答した。これで、私の残りのライフ数が、4から3へと減った。
77と予測したが、ここでは"Too Low"と回答した。これで、私の残りのライフ数が、3から2へと減った。137と予測したが、ここでは”Too High"と回答した。これで、私の残りのライフ数が、2から1へと減った。106とも予測したが、正解(The correct number) が126であったため、私は、ゲームオーバーになってしまった。
引用元:
https://github.com/dericsadrs/100-Days-of-Code-Complete-Python-Pro-BootCamp/tree/master/Day%2012
皆さんも時間がある時に、このプログラムコードを参考にして、Guess the Number Game を遊んでみたらいかがでしょうか。