pygam的倒计时计时器

2024-04-23 10:35:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我之前问过一个关于多重碰撞检测的问题,但是我没有创建代码来解决这个问题的技能,我只是添加了第二个墙,并试图设置一个计时器。

我的问题是如何在代码中加入计时器?

它需要倒计时,当它点击00:00时,显示文本:GAME OVER并结束游戏。如果这有帮助的话,我会把代码的主线放进去。如果你需要更多的代码,如类等,我很高兴张贴它。

while done == False:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True

            #This makes the player move
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                player.changespeed(-6,0)
            if event.key == pygame.K_RIGHT:
                player.changespeed(6,0)
            if event.key == pygame.K_UP:
                player.changespeed(0,-6)
            if event.key == pygame.K_DOWN:
                player.changespeed(0,6)

        #This stops the player from moving
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT:
                player.changespeed(6,0)
            if event.key == pygame.K_RIGHT:
                player.changespeed(-6,0)
            if event.key == pygame.K_UP:
                player.changespeed(0,6)
            if event.key == pygame.K_DOWN:
                player.changespeed(0,-6)

    player.updateWall(wall_list)

    window.fill(black)

    movingsprt.draw(window)
    wall_list.draw(window)

    pygame.display.flip()

    clock.tick(40)

pygame.quit()            

Tags: thekey代码righteventiftypewindow
3条回答

你可以这么做

time = 100 #time in seconds
pygame.time.set_timer(USEREVENT+1, 1000)#1 second is 1000 milliseconds 

#everything below this line should be in your main loop
for event in pygame.event.get():
    if event.type = USEREVENT+1:
        time -= 1

if time == 0:
    print "GAME OVER"

您可以在一段时间后生成事件。见:http://www.pygame.org/docs/ref/time.html#pygame.time.set_timer

使用与现在类似的代码,您可以查看事件是否是计时器事件并相应地执行操作。

正如Hans所说,您可以使用pygame.time.set_timer()方法在经过特定时间后调用函数。但在显示时间流逝方面,使用另一种方法可能更好。

使用pygame.time.Clock.tick_busy_loop方法,您可以控制游戏运行的FPS数,并跟踪经过的时间,因为它返回自上次调用以来经过的毫秒数:

clock = pygame.time.Clock()
minutes = 0
seconds = 0
milliseconds = 0

while True: #game loop
    #do stuff here
    if milliseconds > 1000:
        seconds += 1
        milliseconds -= 1000
    if seconds > 60:
        minutes += 1
        seconds -= 60

    print ("{}:{}".format(minutes, seconds))

    milliseconds += clock.tick_busy_loop(60) #returns the time since the last time we called the function, and limits the frame rate to 60FPS

相关问题 更多 >