Я разместил весь код на всякий случай - я считаю, что он либо в функциях "play_game" или "check_t ie". Я следовал учебному пособию, и эти части (play_game & check_t ie) написаны так же, как и в учебнике, другие части, которые не связаны с функцией check_t ie, которую я написал по-своему. Все в игре работает кроме функции check_t ie. Игра просто не остановится.
Спасибо за помощь!
game_still_going = True
winner = None
current_player = ''
board = ["-", "-", "-",
"-", "-", "-",
"-", "-", "-"]
def play_game():
players()
display_board()
while game_still_going:
handle_turn(current_player)
check_if_game_over()
flip_player()
if winner == 'X' or winner == 'O':
print (winner + " is the winner!!!")
elif winner == None:
print ("Tie.")
def players():
global current_player
print("Select your symbol: 'X' or 'O'")
p1 = input("Player one: ")
if p1.upper() == 'X':
p2 = 'O'
current_player = 'X'
print ('Player 1: ' + p1.upper())
print ('Player 2: ' + p2)
elif p1.upper() == 'O':
p2 = 'X'
current_player = 'O'
print ('Player 1: ' + p1.upper())
print ('Player 2: ' + p2)
elif p1 != 'X' and p1 != 'O':
print ('Invalid input sorry, try again')
players()
def display_board():
print("\n")
print (board[0] + " | " + board[1] + " | " + board[2])
print (board[3] + " | " + board[4] + " | " + board[5])
print (board[6] + " | " + board[7] + " | " + board[8])
print("\n")
def handle_turn(player):
print (player + "'s turn.")
position = input('Choose a position from 1-9: ')
if position not in ["1", "2", "3", "4", "5", "6", "7", "8", "9"]:
print ("Invalid input. try again")
display_board()
handle_turn(player)
else:
position = int(position) - 1
if board[position] == "-":
board[position] = player
display_board()
elif board[position] == 'X' or board[position] == 'O':
print ("That slot is taken! Try again.")
display_board()
handle_turn(player)
def check_if_game_over():
check_for_winner()
check_tie()
def check_for_winner():
global winner
# check rows
row_winner = check_rows()
column_winner = check_columns()
diagonal_winner = check_diagonals()
if row_winner:
winner = row_winner
elif column_winner:
winner = column_winner
elif diagonal_winner:
winner = diagonal_winner
else:
winner = None
def check_rows():
global game_still_going
row_1 = board[0] == board[1] == board[2] != '-'
row_2 = board[3] == board[4] == board[5] != '-'
row_3 = board[6] == board[7] == board[8] != '-'
if row_1 or row_2 or row_3:
game_still_going = False
if row_1:
return board[0]
if row_2:
return board[3]
if row_3:
return board[6]
return
def check_columns():
global game_still_going
column_1 = board[0] == board[3] == board[6] != '-'
column_2 = board[1] == board[4] == board[7] != '-'
column_3 = board[2] == board[5] == board[8] != '-'
if column_1 or column_2 or column_3:
game_still_going = False
if column_1:
return board[0]
if column_2:
return board[1]
if column_3:
return board[2]
return
def check_diagonals():
global game_still_going
diagonal_1 = board[0] == board[4] == board[8] != '-'
diagonal_2 = board[2] == board[4] == board[6] != '-'
if diagonal_1 or diagonal_2:
game_still_going = False
if diagonal_1:
return board[0]
if diagonal_2:
return board[2]
return
def check_tie():
global game_still_going
if '-' not in board:
game_stil_going = False
# return winner
else:
return False
def flip_player():
global current_player
if current_player == 'X':
current_player = 'O'
elif current_player == 'O':
current_player = 'X'
return
play_game()