【问题标题】:Watch numbers add up in pygame观看数字在 pygame 中相加
【发布时间】:2016-04-23 21:00:13
【问题描述】:

我正在将 Python 2.7.6 与 pygame 一起使用,我对编程和 pygame 仍然很陌生。有没有一种方法可以让我实现它,如果我有数字,它将变为 0 到 1 到 2 到 3 到 4 到5 而不是 0 到 5?就像地球上的卫生系统一样,它不只是下降,它一次只下降一个数字。我尝试在 for 循环中使用 time.sleep() 但它只是暂停了我的整个游戏一秒钟。

for i in range(7):
    time.sleep(.5)
    dodged += 1

没有 time.sleep() 我累了,但它太快了,甚至看不到。

for i in range(7):
    dodged += 1

有人知道怎么做吗?

【问题讨论】:

    标签: python time numbers pygame


    【解决方案1】:

    您应该将pygame.time.set_timer 用于游戏中的周期性事件(在这种情况下,数字会增加。在事件循环之前运行此代码:

    increase_event = pygame.USEREVENT + 1
    pygame.time.set_timer(increase_event, number_change_time_in_milliseconds)
    

    然后在你的循环中运行这段代码:

    if event.type == increase_event
        dodged += 1
    

    【讨论】:

    • 我没有收到错误,但它的工作方式与以前相同?我要编辑什么数字来改变它的上升幅度?我尝试将 number_change_time 变量更改为 10,但效果相同。
    • number_change_time 以毫秒为单位。您可能混淆了单位。
    【解决方案2】:

    像这样:

    #upcount
    
    import pygame, sys
    from pygame.locals import *
    
    pygame.init()
    
    size = width, height = 200, 200
    
    screen = pygame.display.set_mode(size)
    font = pygame.font.SysFont('arial', 20)
    
    increase_event = pygame.USEREVENT + 1
    number_change_time = 1000 # 1 second
    
    def main():
        pygame.time.set_timer(increase_event, number_change_time)
        global dodged
        dodged = 0
    
        while True:
            event_loop()
            update()
    
    def event_loop():
    
        global dodged
        events = pygame.event.get()
    
        for event in events:
            if event.type == pygame.QUIT:
                sys.exit()
    
            if event.type == pygame.KEYDOWN:
                pygame.time.set_timer(increase_event, 0) #  stop the timer on keypress
    
            if event.type == increase_event:
                dodged += 1
    
    def update():
        global dodged
        screen.fill((0,0,0))
        numstr = str(dodged)
        mytext = font.render(numstr, True, (255,255,0))
        mytext = mytext.convert_alpha()
        screen.blit(mytext, (20, 30))
    
        pygame.display.flip()
    
    if __name__=="__main__":
        main()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-30
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多