康威';s生命游戏Python/PyGame打印错误
我是python和PyGame新手,希望通过做我认为简单的项目来获得一些经验。我不知道我的错误是在游戏逻辑中还是在PyGame打印中。我创建了两个函数,一个用随机值填充网格,另一个用“闪烁器”填充网格。程序运行没有错误,但是没有遵守游戏规则。例如,当设置“闪烁器”时,程序的第二帧将清除屏幕,而不是旋转“闪烁器”。 如果您能帮助诊断此问题,我们将不胜感激康威';s生命游戏Python/PyGame打印错误,python,pygame,Python,Pygame,我是python和PyGame新手,希望通过做我认为简单的项目来获得一些经验。我不知道我的错误是在游戏逻辑中还是在PyGame打印中。我创建了两个函数,一个用随机值填充网格,另一个用“闪烁器”填充网格。程序运行没有错误,但是没有遵守游戏规则。例如,当设置“闪烁器”时,程序的第二帧将清除屏幕,而不是旋转“闪烁器”。 如果您能帮助诊断此问题,我们将不胜感激 import pygame import random pygame.init() # Colors BLACK = (0, 0, 0) WH
import pygame
import random
pygame.init()
# Colors
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
# Sizes
size = (600, 600)
width = 20
height = 20
margin = 1
x_size = 600 / width
y_size = 600 / height
def init_grid():
return [[0 for x in range(x_size)] for y in range(y_size)]
def make_spinner(grind):
grid[0][0] = 1
grid[10][10] = 1
grid[10][11] = 1
grid[10][12] = 1
def random_grid(grid):
for x in range(x_size):
for y in range(y_size):
grid[x][y] = random.randint(0, 1)
def print_grid(screen, grid):
for x in range(x_size):
for y in range(y_size):
if grid[x][y] == 1:
pygame.draw.rect(
screen, BLACK, (x * width, y * height, width, height))
else:
pygame.draw.rect(
screen, BLACK, (x * width, y * height, width, height), margin)
def count_neighbours(grid, x, y):
count = 0
for i in range(-1, 1):
for j in range(-1, 1):
count += grid[x + i][y + j]
return count - grid[x][y]
def update_grid(grid):
next_grid = init_grid()
for x in range(x_size):
for y in range(y_size):
if x == 0 or x == x_size - 1 or y == 0 or y == y_size - 1:
next_grid[x][y] = 0
else:
count = count_neighbours(grid, x, y)
value = grid[x][y]
if value == 1 and (count == 2 or count == 3):
next_grid[x][y] = 1
elif value == 0 and count == 3:
next_grid[x][y] = 1
else:
next_grid[x][y] = 0
return next_grid
# Initialise game engine
screen = pygame.display.set_mode(size)
pygame.display.set_caption("The Game of Life")
running = True
clock = pygame.time.Clock()
grid = init_grid()
# random_grid(grid)
make_spinner(grid)
# Game loop
while running:
# Check for exit
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill(WHITE)
print_grid(screen, grid)
next_grid = update_grid(grid)
pygame.display.update()
grid = next_grid
clock.tick(2)
pygame.quit()
count_Neights函数没有在正确的单元格上迭代<代码>范围(-1,1)迭代
{-1,0}
非{-1,0,1}
相反,请使用:
def count_neighbours(grid, x, y):
count = 0
for i in range(-1,2):
for j in range(-1,2):
count += grid[x + i][y + j]
return count - grid[x][y]
请提供完整的错误消息和堆栈跟踪或问题的详细描述(如果您没有收到任何错误)。没有错误,但游戏逻辑不正确或pygame实现不正确。我更新了我的描述。谢谢。到目前为止,您自己是如何诊断问题的?您发现了什么?谢谢!来自Java和C的python新手。现在我了解了循环!