Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
康威';s生命游戏Python/PyGame打印错误_Python_Pygame - Fatal编程技术网

康威';s生命游戏Python/PyGame打印错误

康威';s生命游戏Python/PyGame打印错误,python,pygame,Python,Pygame,我是python和PyGame新手,希望通过做我认为简单的项目来获得一些经验。我不知道我的错误是在游戏逻辑中还是在PyGame打印中。我创建了两个函数,一个用随机值填充网格,另一个用“闪烁器”填充网格。程序运行没有错误,但是没有遵守游戏规则。例如,当设置“闪烁器”时,程序的第二帧将清除屏幕,而不是旋转“闪烁器”。 如果您能帮助诊断此问题,我们将不胜感激 import pygame import random pygame.init() # Colors BLACK = (0, 0, 0) WH

我是python和PyGame新手,希望通过做我认为简单的项目来获得一些经验。我不知道我的错误是在游戏逻辑中还是在PyGame打印中。我创建了两个函数,一个用随机值填充网格,另一个用“闪烁器”填充网格。程序运行没有错误,但是没有遵守游戏规则。例如,当设置“闪烁器”时,程序的第二帧将清除屏幕,而不是旋转“闪烁器”。 如果您能帮助诊断此问题,我们将不胜感激

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新手。现在我了解了循环!