Python井字棋异常:玩家胜败时仍触发平局提示
井字棋平局提示逻辑修复方案
问题根源:当前代码中,第9步决出胜负时,胜负提示弹出后,后续的clickCount ==9判断仍会执行,导致平局提示也被触发。
修复方案一:胜负判定后终止函数执行
在玩家或电脑获胜的分支中添加return语句,直接终止函数运行,跳过后续的平局判断逻辑:
def btn_click(row, col): global hasClicked, clickCount if buttonGrid[row][col]["text"] == "" and hasClicked == True: buttonGrid[row][col]["text"] = "X" clickCount += 1 # 检查玩家是否获胜 if who_wins("X"): messagebox.showinfo("O-X-O", "You win, Congratulations!") messagebox.showinfo("O-X-O", "Go to Menu to play again or quit!") disable_buttons() return # 终止函数,不再执行后续代码 else: computer_turn() # 检查电脑是否获胜 if who_wins("O"): messagebox.showinfo("O-X-O", "You lose, Unlucky!") messagebox.showinfo("O-X-O", "Go to Menu to play again or quit!") return # 终止函数,不再执行后续代码 # 仅当无胜负且填满格子时触发平局提示 if clickCount == 9: messagebox.showinfo("O-X-O", "It was a Draw!") messagebox.showinfo("O-X-O", "Go to Menu to play again or quit!")
修复方案二:给平局判断添加无胜负前提
修改平局判断条件,确认双方均未获胜后再触发提示:
def btn_click(row, col): global hasClicked, clickCount if buttonGrid[row][col]["text"] == "" and hasClicked == True: buttonGrid[row][col]["text"] = "X" clickCount += 1 # 检查玩家是否获胜 if who_wins("X"): messagebox.showinfo("O-X-O", "You win, Congratulations!") messagebox.showinfo("O-X-O", "Go to Menu to play again or quit!") disable_buttons() else: computer_turn() # 检查电脑是否获胜 if who_wins("O"): messagebox.showinfo("O-X-O", "You lose, Unlucky!") messagebox.showinfo("O-X-O", "Go to Menu to play again or quit!") # 仅当填满格子且双方均未获胜时触发平局提示 if clickCount == 9 and not who_wins("X") and not who_wins("O"): messagebox.showinfo("O-X-O", "It was a Draw!") messagebox.showinfo("O-X-O", "Go to Menu to play again or quit!")
两种方案均可解决问题:方案一效率更高,决出胜负后直接终止函数;方案二逻辑更直观,明确平局的触发条件。
内容的提问来源于stack exchange,提问作者twigMURR
相关产品推荐
相关产品推荐

