我正在制作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
但问题是这些方块不再被标记了。
答案 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]