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



我正在制作康威的生活游戏模拟器,我在用颜色标记方块时遇到了一些麻烦。我使用矩阵作为正方形,当我单击正方形时,我将值从 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

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

您可以尝试使用 time.time(( 每次点击添加一种冷却。

# 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

time.time()所做的是返回自 1970 年 1 月 1 日午夜以来的当前秒数。因此,如果您在再次检查之前测试它是否已经过了一定时间,这可能有助于解决问题。

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

在使用它们之前尝试设置 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]

最新更新