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风格指南() 我看到的下一个可疑代码是: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
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]