首页 > 解决方案 > 井字游戏的功能

问题描述

我正在使用一个函数来根据用户输入生成井字棋盘:

def write_board(size):
    h=[size*[0]]
    board=h*size
    return board

这个函数在另一个函数中被用来自动生成移动,即它被保存到一个被调用的变量中:

def game(scen,size):
    move=1
    board=write_board(size)
    win=False
    res=None
    while win==False:
        if move%2==1:
            coordinates=[(x, y) for x, l in enumerate(board) for y, i in enumerate(l) if i == 0]
            if coordinates==[]:
                print("Over")
                return 0
                break
            x,y=random.choice(coordinates)
            board[x][y]=1

但是,一次移动会勾选多个坐标。例如,如果移动是 (1,4),那么结果是:

[[0, 0, 0, 0, 1], [0, 0, 0, 0, 1], [0, 0, 0, 0, 1], [0, 0, 0, 0, 1], [0, 0, 0, 0, 1]]

而不仅仅是:

[[0, 0, 0, 0, 0], [0, 0, 0, 0, 1], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

但是,如果板是硬编码的板变量:

    board=[[0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 0]]

那么结果是正确的,即对于坐标(1,4):

[0, 0, 0, 0, 0], [0, 0, 0, 0, 1], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

希望这个解释足够清楚。谢谢!

标签: pythontic-tac-toe

解决方案


推荐阅读