首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Tac Tac Toe对角检查

Tac Tac Toe对角检查
EN

Stack Overflow用户
提问于 2017-11-22 06:33:56
回答 3查看 2K关注 0票数 1

我正在构建一个Tic-Tac-Toe游戏,我有一个垂直和水平的检查,看起来像这样:

代码语言:javascript
复制
def check_win_left_vert (board):
    win = True
    x = 0
    for y in range (2):
        if board[y][x] != board[y+1][x]:
            win = False
    return win

它通过递增y轴来查看棋盘;我对x轴使用相同的方法。对于对角轴,我该如何做呢?我会同时递增两者吗?

EN

回答 3

Stack Overflow用户

发布于 2017-11-22 06:35:33

您将在一条对角线上对两者使用相同的变量,并在另一条对角线上将其"2反转“:

代码语言:javascript
复制
for x in range(2):
    if board[x][x] ...

for x in range(2):
    if board[x][2-x] ...

请注意,您必须注意边界条件。我强烈怀疑您还没有费心测试您的水平代码,因为它试图检查电路板右边的空格。缩小范围以修复此问题。

票数 0
EN

Stack Overflow用户

发布于 2017-11-22 07:50:28

您需要在同一循环中检查对角线的情况

代码语言:javascript
复制
    if board[y][y] != board[y+1][y+1] or board[2-y][y] != board[1-y][1+y]:
        win = False
    if win == False:
        break;
票数 0
EN

Stack Overflow用户

发布于 2020-06-08 13:05:34

所有使用列表理解的检查

代码语言:javascript
复制
game_board = [ [1, 0, 1],
               [0, 1, 0],
               [0, 1, 0] ]

# Horizontals
h = [str(i+1) + ' Row' for i, v in enumerate(game_board) if sum(v) == 3]

# Verticals
v = [str(i+1) + ' Col' for i in range(3) if sum([j[i] for j in game_board]) == 3]

# Diagonals
d = [['Left Diag', '','Right Diag'][i+1] for i in [-1, 1] if sum([game_board[0][1+i], game_board[1][1]], game_board[2][1-i]) == 3]

if any([h,v,d]):
    print('You won on:', h, v, d)
else:
    print('No win yet')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47423891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档