首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >活动上的pygame时间管理

活动上的pygame时间管理
EN

Stack Overflow用户
提问于 2017-02-07 11:39:49
回答 1查看 421关注 0票数 0

很抱歉我的回答太新奇了。我想要创建一个网格,当我点击正方形时,然后一秒钟传递给白色,然后返回到黑色。对我来说,逻辑形式是这样的,但有一些我不理解的东西:( pygame.time.delay(1000)不能工作)

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2017-02-08 01:40:17

pygame.time.delay(1000)起作用了!这会导致程序在一整秒内什么都不做;这包括不更新屏幕,因为如果不调用pygame.display.flip(),屏幕就不会更新,这不会发生,因为程序在一整秒内什么都不做。

下面是一个以正确的方式等待整整一秒的程序示例:

代码语言:javascript
复制
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等于一整秒的延迟。

我还没能测试这段代码,,但当你点击屏幕时,它应该会闪烁白色一秒钟。您应该能够在自己的代码中应用相同的概念。

如果您需要进一步的澄清(或者我的代码不工作),请在评论中通知我,我将非常乐意为您提供进一步的帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42081305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档