Я пытаюсь сделать игру ti c -ta c -toe, и код работает просто отлично, но в последнем случае, когда игрок или компьютер выигрывает, он не рисует «X» или «О» и ни одна из линий разреза, которая должна быть проведена, когда кто-то из них выиграет. Также окно сообщения curr_status
в функции main()
не обновляется и продолжает отображать Player 1 Chance
Вот весь код на случай, если кто-то захочет его увидеть
main ()
def main():
global win
global boxsize
entries = [[None] * 3, [None] * 3, [None] * 3]
windowsize = 400
boxsize = 100
win = GraphWin("Tic Tac Toe", windowsize, windowsize, autoflush=False)
win.setBackground("grey")
grid_img = Image(Point(200, 200), "grid.png")
grid_img.draw(win)
win1_message = 'Player 1 wins!'
win2_message = 'Player 2 wins!'
delay_message = 'Thinking....'
draw_message = "It's a draw"
p1_chance_message = 'Player 1 Chance'
curr_status = Text(Point(200, 380), "TIC TAC TOE GAME")
curr_status.setSize(20)
curr_status.setTextColor("blue")
curr_status.setStyle("bold italic")
curr_status.draw(win)
for i in range(1, 10):
curr_status.setText(p1_chance_message)
p1mouse = win.getMouse()
p1x = p1mouse.getX()
p1y = p1mouse.getY()
player_move(entries, win, p1x, p1y)
if check(entries) is True:
curr_status.setText(win1_message)
break
elif check(entries) is False:
curr_status.setText(draw_message)
break
curr_status.setText(delay_message)
computer_move(entries, win)
if check(entries) is True:
curr_status.setText(win2_message)
break
elif check(entries) is False:
curr_status.setText(draw_message)
break
curr_status.setText(p1_chance_message)
print("Enter 1 to play again, 0 to Exit : ")
x = int(input())
if (x == 1):
win.close()
main()
else:
sys.exit()
check()
функция, которая проверяет, выиграл ли кто-либо или сыграл вничью, и др aws линия разреза, если требуется
def check(entries):
if (entries[0][0] == 'x' and entries[0][1] == 'x' and entries[0][2] == 'x'):
line = Line(Point(100, 50), Point(100, 350))
line.setFill('red')
line.setWidth(5)
line.draw(win)
return True
elif (entries[1][0] == 'x' and entries[1][1] == 'x' and entries[1][2] == 'x'):
line = Line(Point(200, 50), Point(200, 350))
line.setFill('red')
line.setWidth(5)
line.draw(win)
return True
elif (entries[2][0] == 'x' and entries[2][1] == 'x' and entries[2][2] == 'x'):
line = Line(Point(300, 50), Point(300, 350))
line.setFill('red')
line.setWidth(5)
line.draw(win)
return True
elif (entries[0][0] == 'x' and entries[1][0] == 'x' and entries[2][0] == 'x'):
line = Line(Point(50, 100), Point(350, 100))
line.setFill('red')
line.setWidth(5)
line.draw(win)
return True
elif (entries[0][1] == 'x' and entries[1][1] == 'x' and entries[2][1] == 'x'):
line = Line(Point(50, 200), Point(350, 200))
line.setFill('red')
line.setWidth(5)
line.draw(win)
return True
elif (entries[0][2] == 'x' and entries[1][2] == 'x' and entries[2][2] == 'x'):
line = Line(Point(50, 300), Point(350, 300))
line.setFill('red')
line.setWidth(5)
line.draw(win)
return True
elif (entries[0][0] == 'x' and entries[1][1] == 'x' and entries[2][2] == 'x'):
line = Line(Point(50, 50), Point(350, 350))
line.setFill('red')
line.setWidth(5)
line.draw(win)
return True
elif (entries[0][2] == 'x' and entries[1][1] == 'x' and entries[2][0] == 'x'):
line = Line(Point(50, 350), Point(350, 50))
line.setFill('red')
line.setWidth(5)
line.draw(win)
return True
elif (entries[0][0] == 'o' and entries[0][1] == 'o' and entries[0][2] == 'o'):
line = Line(Point(100, 50), Point(100, 350))
line.setFill('green')
line.setWidth(5)
line.draw(win)
return True
elif (entries[1][0] == 'o' and entries[1][1] == 'o' and entries[1][2] == 'o'):
line = Line(Point(200, 50), Point(200, 350))
line.setFill('green')
line.setWidth(5)
line.draw(win)
return True
elif (entries[2][0] == 'o' and entries[2][1] == 'o' and entries[2][2] == 'o'):
line = Line(Point(300, 50), Point(300, 350))
line.setFill('green')
line.setWidth(5)
line.draw(win)
return True
elif (entries[0][0] == 'o' and entries[1][0] == 'o' and entries[2][0] == 'o'):
line = Line(Point(50, 100), Point(350, 100))
line.setFill('green')
line.setWidth(5)
line.draw(win)
return True
elif (entries[0][1] == 'o' and entries[1][1] == 'o' and entries[2][1] == 'o'):
line = Line(Point(50, 200), Point(350, 200))
line.setFill('green')
line.setWidth(5)
line.draw(win)
return True
elif (entries[0][2] == 'o' and entries[1][2] == 'o' and entries[2][2] == 'o'):
line = Line(Point(50, 300), Point(350, 300))
line.setFill('green')
line.setWidth(5)
line.draw(win)
return True
elif (entries[0][0] == 'o' and entries[1][1] == 'o' and entries[2][2] == 'o'):
line = Line(Point(50, 50), Point(350, 350))
line.setFill('green')
line.setWidth(5)
line.draw(win)
return True
elif (entries[0][2] == 'o' and entries[1][1] == 'o' and entries[2][0] == 'o'):
line = Line(Point(50, 350), Point(350, 50))
line.setFill('green')
line.setWidth(5)
line.draw(win)
return True
elif (all([all(row) for row in entries])):
return False