加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python连接4检查win功能

发布时间:2020-12-20 11:42:38 所属栏目:Python 来源:网络整理
导读:我正在写一个连接4游戏,你可以在其中选择板的大小.对于大多数电路板尺寸而言,游戏可以完美运行,但是当电路板较高而宽度较大时,会给我带来问题.我不断得到索引超出范围错误,我不知道我做错了什么.就我的检查功能而言,这就是我现在所拥有的,因为它是唯一给我问
我正在写一个连接4游戏,你可以在其中选择板的大小.对于大多数电路板尺寸而言,游戏可以完美运行,但是当电路板较高而宽度较大时,会给我带来问题.我不断得到索引超出范围错误,我不知道我做错了什么.就我的检查功能而言,这就是我现在所拥有的,因为它是唯一给我问题的部分.

def checkOWin(board):

    boardHeight = len(board)
    boardWidth = len(board[0])
    tile = 'O'
    # check horizontal spaces
    for y in range(boardHeight):
        for x in range(boardWidth - 3):
            if board[x][y] == tile and board[x+1][y] == tile and board[x+2][y] == tile and board[x+3][y] == tile:
                return True

    # check vertical spaces
    for x in range(boardWidth):
        for y in range(boardHeight - 3):
            if board[x][y] == tile and board[x][y+1] == tile and board[x][y+2] == tile and board[x][y+3] == tile:
                return True

    # check / diagonal spaces
    for x in range(boardWidth - 3):
        for y in range(3,boardHeight):
            if board[x][y] == tile and board[x+1][y-1] == tile and board[x+2][y-2] == tile and board[x+3][y-3] == tile:
                return True

    # check  diagonal spaces
    for x in range(boardWidth - 3):
        for y in range(boardHeight - 3):
            if board[x][y] == tile and board[x+1][y+1] == tile and board[x+2][y+2] == tile and board[x+3][y+3] == tile:
                return True

    return False

任何帮助或建议将不胜感激.提前致谢!

解决方法

你刚刚混淆了你的尺寸,你应该这样设置它们:

def checkOWin(board):
    boardHeight = len(board[0])
    boardWidth = len(board)

因为当你引用board [x]时,那就是计算电路板中列表的数量,当你引用电路板[x] [y]时,它只是指电路板中一个特定行的长度.

if board[x][y] == tile and board[x+1][y] == tile and board[x+2][y] == tile and board[x+3][y] == tile:

当我翻转这些值时,函数运行没有错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读