https://www.udemy.com/complete-python-bootcamp/learn/lecture/9442462#questions
def check_win(mark, board):
winpattern = mark * 3
#print(board['7'] + board['8'] + board['9'])
map=[board['7'] + board['8'] + board['9'],
board['4'] + board['5'] + board['6'],
board['1'] + board['2'] + board['3'],
board['7'] + board['4'] + board['1'],
board['8'] + board['5'] + board['2'],
board['9'] + board['6'] + board['3'],
board['7'] + board['5'] + board['3'],
board['9'] + board['5'] + board['1']]
for pattern in map:
#print(pattern)
if pattern == winpattern:
return True
return False
def show_board(board):
clear_output()
print(f"{board['7']}|{board['8']}|{board['9']}")
print('-+-+-')
print(f"{board['4']}|{board['5']}|{board['6']}")
print('-+-+-')
print(f"{board['1']}|{board['2']}|{board['3']}")
def get_player_name(player_num,players):
accept_name=False
while not accept_name:
players[player_num] = input(f"Player {player_num}, please enter your name :")
if player_num=='1' or players[player_num]!=players['1']:
accept_name=True
else:
print(f"Name '{players['1']}' has been taken. Please select another name.")
print(f"Thank you, {players[player_num]}!")
return players
def get_play(player, board):
need_play=True
while need_play:
play=input(f"{player['name']}, please enter your play (1 - 9)")
if play in board and play==board[play]:
board[play]=player['mark']
need_play=False
else:
print("Play unavailable. Please select another position.")
return board
from IPython.display import clear_output
debug=True
keep_playing=True
board={}
players=[]
winner=0
if debug:
players=['',{'name':'Thomas','mark':'X'},
{'name':'Sofia','mark':'O'}]
else:
players[0]=0
players=get_player_name(1, players)
players=get_player_name(2,players)
while keep_playing:
#reset board
for pos in range(1,10):
i=str(pos)
board[i]=i
player=0
move=0
while not winner and move<9:
move+=1
#change player
player = 2 if player == 1 else 1
show_board(board)
board=get_play(players[player], board)
winner=check_win(players[player]['mark'],board)
#winner=False #True
show_board(board)
if winner:
print(f"Congratulations, {players[player]['name']}! You won!")
else:
print("It was a draw!")
play_again = input("Play again? (Y or N)")
if play_again.lower()=='n' or play_again.lower()=='no':
keep_playing=False
else:
winner=False
print("Good bye!")