动态尺寸井字棋一维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
相关产品推荐
相关产品推荐

