在Conway的生命游戏模拟器中标记正方形会快速改变颜色

时间:2017-08-17 12:46:02

标签: python conways-game-of-life

我正在制作Conway的生活模拟器游戏,我在用一种颜色标记方块时遇到了一些麻烦。我正在使用矩阵作为正方形,当我点击一个正方形时,我将值从0更改为1.或者这就是它应该是什么样的。 我第一次尝试使用下面的代码,但问题是当我点击它时,它会从标记到非标记迅速变为标记等等。

if pygame.mouse.get_pressed()[0]:
    if grid[y][x] == 0:
        mouse_x,mouse_y = pygame.mouse.get_pos()
        x = mouse_x // (size + 1)
        y = mouse_y // (size + 1)
        grid[y][x] = 1

    elif grid[y][x] == 1:
        mouse_x,mouse_y = pygame.mouse.get_pos()
        x = mouse_x // (size + 1)
        y = mouse_y // (size + 1)
        grid[y][x] = 0

比我尝试过其他代码:

for event in pygame.event.get():
    if event.type == pygame.MOUSEBUTTONUP:
        if grid[y][x] == 0:
            mouse_x,mouse_y = pygame.mouse.get_pos()
            x = mouse_x // (size + 1)
            y = mouse_y // (size + 1)
            grid[y][x] = 1

        elif grid[y][x] == 1:
            mouse_x,mouse_y = pygame.mouse.get_pos()                        
            x = mouse_x // (size + 1)
            y = mouse_y // (size + 1)
            grid[y][x] = 0

但问题是这些方块不再被标记了。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用time.time()为每次点击添加一种降温效果。

ListView

# Start of program import time cooldown = 0 cooleddown = time.time() - cooldown > 0.7 if pygame.mouse.get_pressed()[0] and cooleddown: cooleddown = time.time() if grid[y][x] == 0: mouse_x,mouse_y = pygame.mouse.get_pos() x = mouse_x // (size + 1) y = mouse_y // (size + 1) grid[y][x] = 1 elif grid[y][x] == 1: mouse_x,mouse_y = pygame.mouse.get_pos() x = mouse_x // (size + 1) y = mouse_y // (size + 1) grid[y][x] = 0 所做的是返回自1970年1月1日午夜以来的当前秒数。因此,如果您在再次检查之前测试它是否已经过了一定的时间,这可能有助于解决问题。

*这未经测试你可能需要玩等待0.7秒可能很少或很长我不知道

答案 1 :(得分:0)

在使用之前尝试设置x和y,也使用布尔值(未测试):

for event in pygame.event.get():
    if event.type == pygame.MOUSEBUTTONUP:
        mouse_x,mouse_y = pygame.mouse.get_pos()
        x = mouse_x // (size + 1)
        y = mouse_y // (size + 1)
        grid[y][x] = not grid[y][x]