【超カンタンアプリ(Python学習用)】じゃんけんゲームを作ろう!

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2021年11月)

「Pythonを独学で覚えてきたけど、あまり実感がわかない!」

「そろそろ自分のアイディアを色々と試してみたい!」

というPython独学者も多いのではないでしょうか?

当記事では、私が自作した超カンタンなアプリゲーム

  • じゃんけんゲーム

を紹介し、プログラミングの楽しさを伝えられたらと思っています

超カンタンアプリという名の通り、パソコンにPythonがインストールされていればできるターミナルもしくはコマンドプロンプトで行うゲームになります

「ゲーム!」と期待した方を裏切ってしまうかもしれませんが、完成映像はこちらです↓

「ひとまずはこんな感じでも良いからやってみよう!」という方は次章以降のコード、解説をご覧ください

icon
icon

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

はじめに

条件としては、お使いのパソコンに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) ⇒

最後ののあとに、

  • グーなら
  • チョキなら
  • パーなら

を入力します

この時にはすでにcomputer側ではrandom関数によって「グー、チョキ、パー」のどれかが格納されています

ゲームを続けるかを決める

あなた:グー、コンピューター:チョキ

あなたの勝ちです!

もう一度??(はい → y、いいえ → n) ⇒

結果の発表後、もう一度やるかどうかを問われます

最後の⇒のあとに

  • もう一度やるなら、y
  • やらずに終わる場合は、n

を入力します

あいこの場合

あなた:グー、コンピューター:グー

あいこなのでもういっかい!

あい

こで

しょ!

あなたはなにを出す?(グー → 1、チョキ → 2、パー → 3) ⇒

最後の⇒のあとに、あなたの手を1,2,3のどれかで入力しよう

終了し、結果発表へ

もう一度??(はい → y、いいえ → n) ⇒n

あなたは3戦3勝0敗
じゃんけんゲームを終了します

⇒でnを選ぶと、終了し結果が発表されます

おわりに

こちらのプログラムの作成時間は、約45分程度でした

みなさんもコードを見ながら、「もっとここをこうしたら、」とか「これを応用してこんなふうにしたら、」など色々とアイディアを出して発展させていってください

今後これをターミナルではなく、Webアプリとして画像付きで作っていけたらなぁと思っています

その時はこちらで発表しますので、ぜひお楽しみに!

タイトルとURLをコピーしました