import random
hands = ['グー', 'チョキ', 'パー']
view = [0,1,2,3,4,5,6,7,8]
results = {'win':'プレイヤー1が勝ち', 'lose':'プレイヤー2が勝ち', 'draw':'あいこ'}
player = {'player1':'プレイヤー1', 'player2':'プレイヤー2'}
def start_message():
print('〇×ゲームスタート!!')
print('最初にどちらがプレイヤー1、プレイヤー2にするか決めてください')
print('先攻後攻をじゃんけんで決めてください')
# 先攻後攻決め
def get_my_hand():
return int(input('0:グー, 1:チョキ, 2:パー'))
def get_you_hand():
return random.randint(0, 2)
def get_hand_name(hand_number):
return hands[hand_number]
def view_hand(my_hand, you_hand):
print('プレイヤー1の手は' + get_hand_name(my_hand))
print('プレイヤー2の手は' + get_hand_name(you_hand))
def get_result(hand_diff):
if hand_diff == 0:
print('もう一回してください')
return 'draw'
elif hand_diff == -1 or hand_diff == 2:
print('プレイヤー1が先攻(〇)')
print('プレイヤー2が後攻(×)')
return 'win'
else:
print('プレイヤー1が後攻(×)')
print('プレイヤー2が先攻(〇)')
return 'lose'
def view_result(result):
print(results[result])
# 表を表示
def view_table():
print('ーーーーー')
for i in range(0, len(view)):
if(i%3 == 2):
print(view[i])
print('ーーーーー')
elif(i%3 == 1):
print(' | ' + str(view[i]) + ' | ', end='')
else :
print(view[i], end='')
print()
# プレイヤー1が先攻の場合
def game(choice):
if(choice == '〇'):
message = int(input("先攻はプレイヤー1です。どこに〇を配置しますか?(例:0) "))
elif(choice == '×'):
message = int(input("後攻はプレイヤー2です。どこに×を配置しますか?(例:0) "))
if(view[message] == '〇' or view[message] == '×'):
game(choice)
else:
view[message] = choice
# プレイヤー2が先攻の場合
def game2(choice):
if(choice == '〇'):
message = int(input("先攻はプレイヤー2です。どこに〇を配置しますか?(例:0) "))
elif(choice == '×'):
message = int(input("後攻はプレイヤー1です。どこに×を配置しますか?(例:0) "))
if(view[message] == '〇' or view[message] == '×'):
game(choice)
else:
view[message] = choice
def judgement():
#縦の勝ち手
if view[0] == view[1] == view[2]:
return view[0]
if view[3] == view[4] == view[5]:
return view[3]
if view[6] == view[7] == view[8]:
return view[6]
#横の勝ち手
if view[0] == view[3] == view[6]:
return view[0]
if view[1] == view[4] == view[7]:
return view[1]
if view[2] == view[5] == view[8]:
return view[2]
#斜めの勝ち手
if view[0] == view[4] == view[8]:
return view[0]
if view[2] == view[4] == view[6]:
return view[2]
else:
return None
def play():
# じゃんけん先攻後攻決め
my_hand = get_my_hand()
you_hand = get_you_hand()
hand_diff = my_hand - you_hand
view_hand(my_hand, you_hand)
result = get_result(hand_diff)
view_result(result)
# あいこの場合
if result == 'draw':
play()
# これより下が〇×ゲーム実行
if result == 'win':
view_table()
for i in range(0,9):
if(i %2 == 0) : #プレイヤー1先攻
print('プレイヤー1')
game('〇')
else: #プレイヤー2後攻
print('プレイヤー2')
game("×")
view_table()
if judgement(): #勝敗を判定
print(judgement() + 'の勝ち!')
break
if i == 8: #引き分け
print('引き分け')
break
if result == 'lose':
view_table()
for i in range(0,9):
if(i %2 == 0) : #プレイヤー2先攻
print('プレイヤー2')
game2('〇')
else: #プレイヤー1後攻
print('プレイヤー1')
game2("×")
view_table()
if judgement(): #勝敗を判定
print(judgement() + 'の勝ち!')
break
if i == 8: #引き分け
print('引き分け')
break
start_message()
play()