如何在 Pygame 中动态显示? [英] How to display dynamically in Pygame?

查看:75
本文介绍了如何在 Pygame 中动态显示?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以在显示器上显示数字1".现在,我的目标是显示数字 1...4.即先显示1",然后显示1",然后再显示2",等等.如何解决?

这是我的代码:

导入pygame导入时间pygame.init()屏幕 = pygame.display.set_mode((640, 480))时钟 = pygame.time.Clock()完成 = 错误font = pygame.font.SysFont("comicsansms", 72)text = font.render("1", True, (0, 128, 0))虽然没有完成:对于 pygame.event.get() 中的事件:如果 event.type == pygame.QUIT:完成 = 真如果 event.type == pygame.KEYDOWN 和 event.key == pygame.K_ESCAPE:完成 = 真screen.fill((255, 255, 255))screen.blit(文本,(320 - text.get_width()//2, 240 - text.get_height()//2))pygame.display.flip()时钟滴答(60)

解决方案

创建一个计数器和我们

I am able to display a number "1" on my display. Now, my goal is to display the numbers 1...4. That means "1" is displayed first, then after 1 "2" is displayed, etc. How to solve that problem?

Here is my code:

import pygame
import time

pygame.init()
screen = pygame.display.set_mode((640, 480))
clock = pygame.time.Clock()
done = False

font = pygame.font.SysFont("comicsansms", 72)  
text = font.render("1", True, (0, 128, 0))

while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
        if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
            done = True

    screen.fill((255, 255, 255))
    screen.blit(text,
                (320 - text.get_width() // 2, 240 - text.get_height() // 2))

    pygame.display.flip()
    clock.tick(60)

解决方案

Create a counter and us str() to convert a value to a string:

counter = 1
text = font.render(str(counter), True, (0, 128, 0))

Add a timer event (see pygame.event) with a certain time interval. A timer event is started by pygame.time.set_timer()

mytimerevent = pygame.USEREVENT + 1
pygame.time.set_timer(mytimerevent, 1000) # 1000 milliseconds = 1 socond 

Increment the counter and change the text on the event:

while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
        if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
            done = True

        if event.type == mytimerevent: # timer event
            counter += 1
            text = font.render(str(counter), True, (0, 128, 0))


    # [...]

这篇关于如何在 Pygame 中动态显示?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆