Python I';我在做康威';这是人生的游戏,我可以';我的代码似乎无法正常工作。我认为我的更新功能是错误的 导入pygame 导入时间 导入系统 高度=100 宽度=100 比例=10 SCREEN=pygame.display.set_模式((宽度*比例,高度*比例)) def create_blank(): “”“创建一个包含所有零的高度x宽度列表。内部列表 所有列表的宽度都是长的,外部列表的高度都是长的。”“” #待办事项 董事会=[] 对于范围内的c(高度): 线路板追加([0]*宽度) 返回板 def get_单元(板,x,y): “”“返回位于x,y位置的游戏板,如果单元格位于该位置,则该值为1。” 位置为活动状态,如果单元格为非活动状态,则为0。如果x或y参数为 超出范围(无效坐标),函数返回0。”“” #待办事项 如果电路板[x][y]==1: 返回1 elif x宽度: 返回0 如果y高度: 返回0 其他: 返回0 def计数(板、x、y): “”“统计位置x,y周围的活动邻居数,包括 对角邻域。不包括单元格本身。”“” #待办事项 计数=0 对于范围(-1,2)内的c: 对于范围(-1,2)内的k: 如果c==0和k==0: 计数=计数 其他: 计数+=获取单元(电路板,x+c,y+k) 返回计数 def更新(电路板): “”“创建一个新的棋盘副本,并使用 旧板。不修改旧板。返回新板。”“” #待办事项 导入副本 新电路板=复制。深度复制(电路板) 对于范围内的x(宽度): 对于范围内的y(高度): 如果计数_(板,x,y)最后,考虑游戏规则:(): 任何少于两个活邻居的活细胞都会死亡,就好像是由于人口不足造成的一样 任何有两个或三个活邻居的活细胞都会延续到下一代 任何有三个以上活邻居的活细胞都会死亡,就好像是因为人口过多 任何有三个活邻居的死细胞都会变成活细胞,就像通过繁殖一样 在您的更新例程中,您不必考虑旧板中的单元是活的还是死的,这对于选择新板中的单元格状态至关重要。我建议在更新例程中根据游戏规则构建if语句。另外,为了保持简洁,在相应的代码旁边添加实际规则作为注释

Python I';我在做康威';这是人生的游戏,我可以';我的代码似乎无法正常工作。我认为我的更新功能是错误的 导入pygame 导入时间 导入系统 高度=100 宽度=100 比例=10 SCREEN=pygame.display.set_模式((宽度*比例,高度*比例)) def create_blank(): “”“创建一个包含所有零的高度x宽度列表。内部列表 所有列表的宽度都是长的,外部列表的高度都是长的。”“” #待办事项 董事会=[] 对于范围内的c(高度): 线路板追加([0]*宽度) 返回板 def get_单元(板,x,y): “”“返回位于x,y位置的游戏板,如果单元格位于该位置,则该值为1。” 位置为活动状态,如果单元格为非活动状态,则为0。如果x或y参数为 超出范围(无效坐标),函数返回0。”“” #待办事项 如果电路板[x][y]==1: 返回1 elif x宽度: 返回0 如果y高度: 返回0 其他: 返回0 def计数(板、x、y): “”“统计位置x,y周围的活动邻居数,包括 对角邻域。不包括单元格本身。”“” #待办事项 计数=0 对于范围(-1,2)内的c: 对于范围(-1,2)内的k: 如果c==0和k==0: 计数=计数 其他: 计数+=获取单元(电路板,x+c,y+k) 返回计数 def更新(电路板): “”“创建一个新的棋盘副本,并使用 旧板。不修改旧板。返回新板。”“” #待办事项 导入副本 新电路板=复制。深度复制(电路板) 对于范围内的x(宽度): 对于范围内的y(高度): 如果计数_(板,x,y)最后,考虑游戏规则:(): 任何少于两个活邻居的活细胞都会死亡,就好像是由于人口不足造成的一样 任何有两个或三个活邻居的活细胞都会延续到下一代 任何有三个以上活邻居的活细胞都会死亡,就好像是因为人口过多 任何有三个活邻居的死细胞都会变成活细胞,就像通过繁殖一样 在您的更新例程中,您不必考虑旧板中的单元是活的还是死的,这对于选择新板中的单元格状态至关重要。我建议在更新例程中根据游戏规则构建if语句。另外,为了保持简洁,在相应的代码旁边添加实际规则作为注释,python,pygame,conways-game-of-life,Python,Pygame,Conways Game Of Life,编辑:如果解释器报告了错误,请共享 我在更新例程中看到的第一个问题是,您正在该例程中导入一个模块。这也是Python风格指南() 我看到的下一个可疑代码是: import pygame import time import sys HEIGHT = 100 WIDTH = 100 SCALE = 10 SCREEN = pygame.display.set_mode((WIDTH*SCALE, HEIGHT*SCALE)) def create_blank(): """Create

编辑:如果解释器报告了错误,请共享

我在更新例程中看到的第一个问题是,您正在该例程中导入一个模块。这也是Python风格指南()

我看到的下一个可疑代码是:

import pygame
import time
import sys

HEIGHT = 100
WIDTH = 100

SCALE = 10
SCREEN = pygame.display.set_mode((WIDTH*SCALE, HEIGHT*SCALE))

def create_blank():
    """Creates a HEIGHT x WIDTH list containing all zero's. The inner lists 
    will all be WIDTH long and the outer list will HEIGHT long."""
    #TODO
    board = []
    for c in range(HEIGHT):
        board.append([0]*WIDTH)
    return board

def get_cell(board, x, y):
    """Returns the game board at position x,y , this is 1 if the cell at that 
    position is alive and 0 if the cell is dead. If the x or y parameters are
    out of bounds (not valid coordinates), the function returns 0."""
    #TODO
    if board[x][y] == 1:
        return 1
    elif x < 0 or x > WIDTH:
        return 0
    elif y < 0 or y > HEIGHT:
        return 0
    else:
        return 0

def count_neighbours(board, x, y):
    """Counts the number of alive neighbours around the position x,y , including 
    diagonal neighbours. Does not include the cell itself."""
    #TODO
    count = 0
    for c in range(-1, 2):
        for k in range(-1, 2):
            if c == 0 and k == 0:
                count = count
            else:
                count += get_cell(board, x+c, y+k)
    return count

def update(board):
    """Creates a new board copy and applies the game rules to each cell using 
    the old board. Does not modify the old board. Returns the new board."""
    #TODO
    import copy
    new_board = copy.deepcopy(board)
    for x in range(WIDTH):
        for y in range(HEIGHT):
            if count_neighbours(board, x, y) < 2:
                new_board[x][y] = 0
            elif count_neighbours(board, x, y) == 2:
                new_board[x][y] = new_board[x][y]
            elif count_neighbours(board, x, y) == 3:
                new_board[x][y] = 1
            else:
                new_board[x][y] = 0
    return new_board
我不明白上述自我分配的目的。想想你为什么这么做,也许你会意识到其他事情是不对的

P>最后,考虑游戏规则:():

  • 任何少于两个活邻居的活细胞都会死亡,就好像是由于人口不足造成的一样
  • 任何有两个或三个活邻居的活细胞都会延续到下一代
  • 任何有三个以上活邻居的活细胞都会死亡,就好像是因为人口过多
  • 任何有三个活邻居的死细胞都会变成活细胞,就像通过繁殖一样
  • 在您的更新例程中,您不必考虑旧板中的单元是活的还是死的,这对于选择新板中的单元格状态至关重要。我建议在更新例程中根据游戏规则构建if语句。另外,为了保持简洁,在相应的代码旁边添加实际规则作为注释


    祝你好运

    大家好,欢迎来到StackOverflow。请花些时间阅读帮助页面,特别是命名和的部分。更重要的是,请阅读。你可能还想了解。为什么你认为你的更新功能是错误的?它在干什么?请添加一些详细信息。我分别运行了所有其他代码,它们似乎工作正常。我是python的初学者,大部分时间我都不知道自己在做什么。它不断地给我各种各样的错误,这取决于我如何更改代码。我真的不知道怎么了。
    new_board[x][y] = new_board[x][y]