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

四子棋Win函数行/列判定失效问题排查与修复求助

问题排查与修复方案

原Win函数的核心问题

  • 行判定逻辑完全错误:
    原代码中针对行的判断,无论当前棋盘格子是1还是非1,都会把boolie设为False,完全无法检测连续四子;还错误地在循环内直接return,逻辑偏离四子棋胜利规则。
  • 列判定逻辑致命错误:
    开局棋盘为空时,所有格子都不等于1,代码会把boolie设为True,循环结束后直接返回True,这就是开局提示玩家1获胜的直接原因。
  • 整体逻辑偏差:
    原代码试图判断整行/整列是否全为当前玩家标记,但四子棋的胜利条件是连续四个相同标记,而非整行整列一致。

修复后的胜利判定实现

以下是符合10×10四子棋规则的胜利判定函数,包含行、列、两条对角线的连续四子检测:

def win():
    global matrix, who2
    SIZE = 10
    target = who2  # 当前玩家的标记(1或2)
    
    # 检测行:每行中连续4个target
    for i in range(SIZE):
        for j in range(SIZE - 3):
            if (matrix[i][j] == target and
                matrix[i][j+1] == target and
                matrix[i][j+2] == target and
                matrix[i][j+3] == target):
                return True
    
    # 检测列:每列中连续4个target
    for i in range(SIZE - 3):
        for j in range(SIZE):
            if (matrix[i][j] == target and
                matrix[i+1][j] == target and
                matrix[i+2][j] == target and
                matrix[i+3][j] == target):
                return True
    
    # 检测主对角线(左上到右下):连续4个target
    for i in range(SIZE - 3):
        for j in range(SIZE - 3):
            if (matrix[i][j] == target and
                matrix[i+1][j+1] == target and
                matrix[i+2][j+2] == target and
                matrix[i+3][j+3] == target):
                return True
    
    # 检测副对角线(右上到左下):连续4个target
    for i in range(3, SIZE):
        for j in range(SIZE - 3):
            if (matrix[i][j] == target and
                matrix[i-1][j+1] == target and
                matrix[i-2][j+2] == target and
                matrix[i-3][j+3] == target):
                return True
    
    # 没有找到连续四子
    return False

关键说明

  • 严格遵循胜利规则:遍历所有可能出现连续四子的位置(行从j=0到6,列从i=0到6,对角线同理),检查是否有连续四个当前玩家的标记。
  • 可优化全局变量依赖:如果想让代码更健壮,可以把matrix和who2作为参数传入函数,替代global声明。
  • 兼容原有对角线逻辑:如果原对角线判定功能正常,可保留原有代码,仅替换错误的行、列判定部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:55:24