很抱歉我的回答太新奇了。我想要创建一个网格,当我点击正方形时,然后一秒钟传递给白色,然后返回到黑色。对我来说,逻辑形式是这样的,但有一些我不理解的东西:( pygame.time.delay(1000)不能工作)
import pygame
# Pygame screen
# Cuadrados
# Añadir tiempo al click
# colores
BLACK = ( 0, 0, 0)
WHITE = ( 255, 255, 255)
GREEN = ( 0, 255, 0)
RED = ( 255, 0, 0)
# iniciar pygame
pygame.init()
# caracteristicas de la ventana
size = (260,260)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Pantalla")
# definir array de cuadro (10x10)
width = 20
height = 20
margin = 5
grid = [[0 for x in range(10)] for y in range(10)]
# control de procesos
done = False
clock = pygame.time.Clock()
# loop principal
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
# evento de click
elif event.type == pygame.MOUSEBUTTONDOWN:
column = pos[0] // (width + margin)
row = pos[1] // (height + margin)
# print
print("Click ", pos, "Coordenadas: ", row, column)
grid[row][column] = 1
pygame.time.delay(1000)
grid[row][column] = 0
# lógica de click
pos = pygame.mouse.get_pos()
x = pos[0]
y = pos[1]
#color de fondo
screen.fill(WHITE)
# dibujar cuadro
for row in range(10):
for column in range(10):
if grid[row][column] == 1:
color = WHITE
else:
color = BLACK
pygame.draw.rect(screen, color, [margin + (margin + width) * column, margin + (margin + height) * row, width, height])
# escribir todo
pygame.display.flip()
clock.tick(60)
# finalizar
pygame.quit()发布于 2017-02-08 01:40:17
pygame.time.delay(1000)起作用了!这会导致程序在一整秒内什么都不做;这包括不更新屏幕,因为如果不调用pygame.display.flip(),屏幕就不会更新,这不会发生,因为程序在一整秒内什么都不做。
下面是一个以正确的方式等待整整一秒的程序示例:
import pygame, sys
pygame.init()
screen = pygame.display.set_mode([500,500])
clock = pygame.time.Clock()
fps = 60
delay = 0
while 1:
clock.tick(fps)
delay -= 1
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.MOUSEBUTTONDOWN:
delay = fps #a one second delay
if delay <= 0:
screen.fill([0,0,0])
else:
screen.fill([255,255,255])
pygame.display.flip()请注意,此处唯一的延迟是帧速率限制器(clock.tick)。由于delay设置为fps,fps为"frames per second ",因此将delay设置为fps等于一整秒的延迟。
我还没能测试这段代码,,但当你点击屏幕时,它应该会闪烁白色一秒钟。您应该能够在自己的代码中应用相同的概念。
如果您需要进一步的澄清(或者我的代码不工作),请在评论中通知我,我将非常乐意为您提供进一步的帮助!
https://stackoverflow.com/questions/42081305
复制相似问题