栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在时间限制后生成精灵,以及如何显示计时器pygame

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在时间限制后生成精灵,以及如何显示计时器pygame

有几种方法可以在pygame中实现计时器。您可以使用

pygame.Clock.tick
返回的时间来增加或减少计时器变量,使用来计算时间差,
pygame.time.get_ticks
或者与一起使用自定义事件
pygame.time.set_timer

示例1- 增量时间:

import sysimport randomimport pygame as pgclass Block(pg.sprite.Sprite):    def __init__(self, pos):        super().__init__()        self.image = pg.Surface((40, 40))        self.image.fill(pg.Color('sienna1'))        self.rect = self.image.get_rect(topleft=pos)def main():    screen = pg.display.set_mode((640, 480))    clock = pg.time.Clock()    font = pg.font.Font(None, 30)    all_sprites = pg.sprite.Group()    # Delta time is the time that has passed since clock.tick    # was called the last time.    dt = 0    # We'll subtract dt (delta time) from this timer variable.    timer = 1  # 1 means one second.    done = False    while not done:        for event in pg.event.get(): if event.type == pg.QUIT:     done = True        # Decrease timer to get a countdown.        timer -= dt        # When the timer is below or equal to 0, we spawn        # a new block.        if timer <= 0: all_sprites.add(Block((random.randrange(600), random.randrange(440)))) # Reset the countdown timer to one second. timer = 1        all_sprites.update()        screen.fill(pg.Color('gray15'))        all_sprites.draw(screen)        timer_surface = font.render( str(round(timer, 3)), True, pg.Color('yellow'))        screen.blit(timer_surface, (20, 20))        pg.display.flip()        # dt = time in seconds that passed since last tick.        # Divide by 1000 to convert milliseconds to seconds.        dt = clock.tick(30) / 1000if __name__ == '__main__':    pg.init()    main()    pg.quit()    sys.exit()

如果您想精确地生成1个Sprite,则可以添加另一个变量,例如,

boss_spawned = False
并仅在Boss没有生成时更改计时器:

if not boss_spawned:    timer -= dt    if timer <= 0:        all_sprites.add(Block((random.randrange(600),         random.randrange(440))))        boss_spawned = True

或在生成后将计时器设置为正好为0,如果是,则仅减少计时器

!= 0

if timer != 0:    timer -= dt    if timer <= 0:        all_sprites.add(Block((random.randrange(600),         random.randrange(440))))        timer = 0

示例2 -pygame.time.get_ticks(替换上面的主要函数):

def main():    screen = pg.display.set_mode((640, 480))    clock = pg.time.Clock()    font = pg.font.Font(None, 30)    all_sprites = pg.sprite.Group()    # Start time.    now = pg.time.get_ticks()    done = False    while not done:        for event in pg.event.get(): if event.type == pg.QUIT:     done = True        # If the time difference is greater than 1000        # milliseconds, spawn a block.        time_difference = pg.time.get_ticks() - now        if time_difference >= 1000: all_sprites.add(Block((random.randrange(600), random.randrange(440)))) # Reset the start time. now = pg.time.get_ticks()        all_sprites.update()        screen.fill(pg.Color('gray15'))        all_sprites.draw(screen)        timer_surface = font.render( str(time_difference/1000), True, pg.Color('yellow'))        screen.blit(timer_surface, (20, 20))        pg.display.flip()        clock.tick(30)

如果只想计算杀戮或生成的生物 ,则可以增加一个计数器变量,然后在超过某个限制时生成敌方首领。以下示例仅计算鼠标的点击次数,并在3次点击后生成一个块。

def main():    screen = pg.display.set_mode((640, 480))    clock = pg.time.Clock()    font = pg.font.Font(None, 30)    all_sprites = pg.sprite.Group()    # We'll just count mouse clicks in this example.    # You can replace it with the kill count in your game.    clicks = 0    done = False    while not done:        for event in pg.event.get(): if event.type == pg.QUIT:     done = True if event.type == pg.MOUSEBUTTONDOWN:     clicks += 1        if clicks >= 3: all_sprites.add(Block((random.randrange(600),  random.randrange(440)))) clicks = 0        all_sprites.update()        screen.fill(pg.Color('gray15'))        all_sprites.draw(screen)        clicks_surface = font.render(str(clicks), True, pg.Color('yellow'))        screen.blit(clicks_surface, (20, 20))        pg.display.flip()        clock.tick(30)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/596445.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号