I/Am 我让函数递归了吗?

Do I/Am I making it the function recursive?

我一个游戏有3个函数,如下:

def round():
    global board
    board_copy = [[x for x in row] for row in board]
    for row in range(n):
        for col in range(n):
            if countNeighbors(row,col) == 3:
                board_copy[row][col] = LIVE
                canvas.itemconfigure(rect[row][col],fill='red')
            elif countNeighbors(row,col) > 3 or countNeighbors(row,col) < 2:
                board_copy[row][col] = DEAD
                canvas.itemconfigure(rect[row][col],fill='black')
    board = board_copy

def start():
    round()
    global alarm
    alarm = window.after(500,round)

def stop():
    global alarm
    window.after.cancel(alarm)

我希望 start() 函数每 500 毫秒 运行 round(),直到用户调用 stop()(使用按钮)。但是,调用 start() 只给我两次 round() 的迭代,然后才完全停止。

你可以试试这个:

game_active = True

def round():
    global board, alarm, game_active

    if not game_active:
      return

    board_copy = [[x for x in row] for row in board]
    for row in range(n):
        for col in range(n):
            if countNeighbors(row,col) == 3:
                board_copy[row][col] = LIVE
                canvas.itemconfigure(rect[row][col],fill='red')
            elif countNeighbors(row,col) > 3 or countNeighbors(row,col) < 2:
                board_copy[row][col] = DEAD
                canvas.itemconfigure(rect[row][col],fill='black')
    board = board_copy

    alarm = window.after(500, round)

def start():
    global game_active
    game_active = True
    round()

def stop():
    global alarm, game_active
    window.after.cancel(alarm)
    game_active = False

基本上,我们让 round 函数一次又一次地调用自己。