(最終更新月:2021年11月)
「Pythonを独学で覚えてきたけど、あまり実感がわかない!」
「そろそろ自分のアイディアを色々と試してみたい!」
というPython独学者も多いのではないでしょうか?
当記事では、私が自作した超カンタンなアプリゲーム
- じゃんけんゲーム
を紹介し、プログラミングの楽しさを伝えられたらと思っています
超カンタンアプリという名の通り、パソコンにPythonがインストールされていればできる、ターミナルもしくはコマンドプロンプトで行うゲームになります
「ゲーム!」と期待した方を裏切ってしまうかもしれませんが、完成映像はこちらです↓
「ひとまずはこんな感じでも良いからやってみよう!」という方は次章以降のコード、解説をご覧ください
はじめに
条件としては、お使いのパソコンにPythonがインストールされていることと、Pythonファイルの実行方法を理解されていること、です
コードの紹介
任意の名前で、「**.py」を作り、下記のコードを記述していきます
当記事では、「janken.py」というファイル名で進めます
#!/usr/bin/env python
#coding: utf-8
import random, time, sys
#じゃんけんをここからだす
janken_dict = {'1':'グー', '2':'チョキ', '3':'パー'}
#1回のじゃんけんごとに元に戻す
counter_in_one_game = 0 #1度のじゃんけんで何回あいこになったか
#じゃんけんの結果
result = 0
#最終的な集計に使う。もとに戻さない
total_game = 0
your_wins = 0
#ゲームを続けるか否か
game_continue=True
#computer用に自動でじゃんけんを選ぶ
def computer():
global janken_choice
return random.choice(list(janken_dict.values()))
#あなたが選ぶもの(入力は数字で)
def you():
global janken_dict
error_check = {'1', '2', '3'} #errorのための記述
right_input = False
while right_input == False:
yours = input("あなたはなにを出す?(グー → 1、チョキ → 2、パー → 3) ⇒")
print('')#出来るだけ見やすくと思って改行
if yours in error_check:
right_input = True
return janken_dict[yours]
#あいこ:0、あなたの勝ち:1、コンピュータの勝ち:2を返す
def judgement(yours, computers):
if yours == computers:
r=0
elif yours == "グー":
if computers == "パー":
r = 2 #computer wins
else: #既に同じ場合は上の条件に該当するので残りはcomputer==チョキ
r = 1 #you win
elif yours == "チョキ":
if computers == "グー":
r = 2
else:
r = 1
else:
if computers == "チョキ":
r = 2
else:
r = 1
print(f"あなた:{yours}、コンピューター:{computers}")
if yours == computers:
print('')
print('あいこなのでもういっかい!')
print('')
time.sleep(0.5)
return r
#じゃんけんぽん、もしくは、あいこでしょ!
def kakegoe():
str_one = "ジャン"
str_two = "ケン"
str_three = "ポン!"
if counter_in_one_game >= 1: #2回目以降はあいこでしょ!
str_one = "あい"
str_two = "こで"
str_three = "しょ!"
print(str_one)
print('')
time.sleep(0.5)
print(str_two)
print('')
time.sleep(0.5)
print(str_three)
print('')
#結果を受け取り、コメントを残す
def judge_comment(result):
global your_wins
if result == 1:
print("あなたの勝ちです!")
print('')
your_wins += 1
else:
print("コンピューターの勝ちです!")
print('')
time.sleep(0.5)
#じゃんけんを続けるかどうかで、global変数を変更する
def janken_continue():
global game_continue
error_check = {'y', 'n', 'Y', 'N'} #errorのための記述
right_input = False
while right_input == False:
yours = input("もう一度??(はい → y、いいえ → n) ⇒")
print('')
if yours in error_check:
right_input = True
yours = yours.lower()#大文字の場合、小文字にする
if yours == 'y':
game_continue = True
else:
game_continue = False
#上記のプログラムをまとめて一つのゲームを完結させる
def main_program():
global result, counter_in_one_game
while result == 0:
kakegoe()
computers = computer()
yours = you()
result = judgement(yours, computers)
counter_in_one_game += 1
time.sleep(1)
judge_comment(result)
#次のゲームに備えて必要なglobal変数をデフォルトに戻す
def reset_for_nextgame():
global result, counter_in_one_game
result = 0
counter_in_one_game = 0
#実行する
if __name__ == "__main__":
while game_continue:
total_game += 1
main_program()
janken_continue() #じゃんけんをつづけるか
reset_for_nextgame()
else:
time.sleep(0.5)
print(f'あなたは{total_game}戦{your_wins}勝{total_game - your_wins}敗')
print("じゃんけんゲームを終了します")
time.sleep(5)
sys.exit()
遊び方
出す手をきめる
ジャン
ケン
ポン!
あなたはなにを出す?(グー → 1、チョキ → 2、パー → 3) ⇒
最後の⇒のあとに、
- グーなら1
- チョキなら2
- パーなら3
を入力します
この時にはすでにcomputer側ではrandom関数によって「グー、チョキ、パー」のどれかが格納されています
ゲームを続けるかを決める
あなた:グー、コンピューター:チョキ
あなたの勝ちです!
もう一度??(はい → y、いいえ → n) ⇒
結果の発表後、もう一度やるかどうかを問われます
最後の⇒のあとに
- もう一度やるなら、y
- やらずに終わる場合は、n
を入力します
あいこの場合
あなた:グー、コンピューター:グー
あいこなのでもういっかい!
あい
こで
しょ!
あなたはなにを出す?(グー → 1、チョキ → 2、パー → 3) ⇒
最後の⇒のあとに、あなたの手を1,2,3のどれかで入力しよう
終了し、結果発表へ
もう一度??(はい → y、いいえ → n) ⇒n
あなたは3戦3勝0敗
じゃんけんゲームを終了します
⇒でnを選ぶと、終了し結果が発表されます
おわりに
こちらのプログラムの作成時間は、約45分程度でした
みなさんもコードを見ながら、「もっとここをこうしたら、」とか「これを応用してこんなふうにしたら、」など色々とアイディアを出して発展させていってください
今後これをターミナルではなく、Webアプリとして画像付きで作っていけたらなぁと思っています
その時はこちらで発表しますので、ぜひお楽しみに!