You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tic Tac Toe(井字棋)游戏win函数异常触发及未正常结束问题求助

井字棋游戏异常问题修复

问题原因分析

win函数无端触发

  • 对角线判断逻辑缺失:第二个对角线条件仅写了board[2,0],未和当前玩家turn做相等判断,只要该位置被占用(非0)就会触发获胜逻辑;
  • 代码缩进错误:所有胜负判断的if语句后,win()和break没有缩进,导致每次落子后不管条件是否满足,都会直接执行获胜逻辑并终止游戏。

游戏未分胜负却无法结束

缺少平局判定逻辑:当棋盘所有位置被填满但无人获胜时,循环会一直运行,没有终止机制。


修复后的完整代码

from numpy import array

board = array([
    [0,0,0],
    [0,0,0],
    [0,0,0]
])

turn = 1

def win():
    print(board)
    print('\nYou Win!\n')

def draw():
    print(board)
    print('\nDraw!\n')

while True:
    print(board)

    row = int(input('Row: '))
    column = int(input('Column: '))

    # 防止重复落子
    if board[row, column] != 0:
        print("这个位置已经被占了!换一个位置吧。")
        continue

    board[row, column] = turn

    # 检查对角线获胜
    if (board[0,0] == turn and board[1,1] == turn and board[2,2] == turn) or \
       (board[0,2] == turn and board[1,1] == turn and board[2,0] == turn):
        win()
        break

    # 检查行获胜
    if (board[0,0] == turn and board[0,1] == turn and board[0,2] == turn) or \
       (board[1,0] == turn and board[1,1] == turn and board[1,2] == turn) or \
       (board[2,0] == turn and board[2,1] == turn and board[2,2] == turn):
        win()
        break

    # 检查列获胜
    if (board[0,0] == turn and board[1,0] == turn and board[2,0] == turn) or \
       (board[0,1] == turn and board[1,1] == turn and board[2,1] == turn) or \
       (board[0,2] == turn and board[1,2] == turn and board[2,2] == turn):
        win()
        break

    # 检查平局:棋盘无空位
    if not (board == 0).any():
        draw()
        break

    # 切换玩家
    turn = 2 if turn == 1 else 1

关键修复说明

  1. 修正缩进:将win()和break移入if语句块内,仅在胜负条件满足时执行;
  2. 补全对角线判断:给第二个对角线的最后一个条件加上== turn,确保三个位置都是当前玩家的棋子才判定获胜;
  3. 添加平局逻辑:通过(board == 0).any()检查是否还有空位,无空位时触发平局并终止循环;
  4. 增加落子校验:防止玩家在已占用位置落子,优化游戏体验;
  5. 简化玩家切换:用三元表达式替代冗余的if-else,代码更简洁。

内容的提问来源于stack exchange,提问作者BackOut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 08:35:30