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