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

动态尺寸井字棋一维grid列表对角线匹配及胜负判定实现求助

一维正方形井字棋对角线胜负检测实现

两种对角线的索引规律可以通用于任意尺寸的正方形棋盘:

  • 左上到右下的主对角线:第i个元素的下标为 i * dim + i,i取值范围0到dim-1
  • 右上到左下的副对角线:第i个元素的下标为 i * dim + (dim - 1 - i),i取值范围0到dim-1

你可以在原有行列检测的代码后面追加如下对角线检测逻辑:

# 检测左上到右下主对角线
if all(grid[i * dim + i] == "X" for i in range(dim)):
    count3 = 0
    print ("Player X win")
    print ("-------------")
    for i in range(dim):
        print(grid[0 + count3 : dim + count3])
        count3 += dim
    print ("-------------")

# 检测右上到左下副对角线
if all(grid[i * dim + (dim - 1 - i)] == "X" for i in range(dim)):
    count3 = 0
    print ("Player X win")
    print ("-------------")
    for i in range(dim):
        print(grid[0 + count3 : dim + count3])
        count3 += dim
    print ("-------------")

如果需要同时支持O玩家的胜负检测,可以把判断条件里的"X"替换成变量,或者分别写X和O的检测逻辑即可。
另外你原有代码里重复的棋盘打印逻辑可以抽成单独的函数,减少冗余代码,示例如下:

def print_board(grid, dim):
    count3 = 0
    print ("-------------")
    for i in range(dim):
        print(grid[0 + count3 : dim + count3])
        count3 += dim
    print ("-------------")

之后检测到胜负时直接调用print_board(grid, dim)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:39:05