第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

“if”命令只運(yùn)行一次,不重復(fù)

“if”命令只運(yùn)行一次,不重復(fù)

翻過高山走不出你 2023-06-20 16:13:36
我是 python 和 Pygame 的新手,正在嘗試創(chuàng)建游戲。我希望在設(shè)定的時(shí)間后出現(xiàn)“通電”,然后每次計(jì)時(shí)器達(dá)到這么多秒時(shí)重復(fù)一次。代碼中,出現(xiàn)“powerup”并在5秒后落下屏幕,定時(shí)器重置,但下一次定時(shí)器達(dá)到5秒時(shí),繼續(xù)計(jì)數(shù),不再產(chǎn)生“powerup”。我花了幾個(gè)小時(shí)試圖找出為什么這不起作用。import pygameimport randomWIDTH = 480HEIGHT = 600FPS = 60WHITE = (255, 255, 255)BLACK = (0, 0, 0)GREEN = (0, 255, 0)pygame.init()screen = pygame.display.set_mode((WIDTH, HEIGHT))clock = pygame.time.Clock()time_difference = 0font_name = pygame.font.match_font('arial')def draw_text(surf, text, size, x, y):    font = pygame.font.Font(font_name, size)    text_surface = font.render(text, True, WHITE)    text_rect = text_surface.get_rect()    text_rect.midtop = (x, y)    surf.blit(text_surface, text_rect)class HealthPack(pygame.sprite.Sprite):    def __init__(self):        pygame.sprite.Sprite.__init__(self)        self.image = pygame.Surface((50, 40))        self.image.fill(GREEN)        self.rect = self.image.get_rect()        self.radius = 50        self.rect.x = random.randrange(WIDTH - self.rect.width)        self.rect.y = random.randrange(-150, -100)        self.speedy = 6        self.speedx = 0    def update(self):        self.rect.y += self.speedy        if self.rect.top > HEIGHT:            self.kill()all_sprites = pygame.sprite.Group()healthpack = HealthPack()running = Truewhile running:    clock.tick(FPS)    time_difference = pygame.time.get_ticks()    if time_difference >= 5000:        all_sprites.add(healthpack)        time_difference -= 5000    for event in pygame.event.get():        if event.type == pygame.QUIT:            running = False    all_sprites.update()    screen.fill(BLACK)    all_sprites.draw(screen)    draw_text(screen, str(time_difference), 18, WIDTH / 2, 55)    pygame.display.flip()pygame.quit()
查看完整描述

2 回答

?
白衣非少年

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊

您不是在計(jì)算自上次以來的時(shí)差powerup。time_difference始終是游戲開始后的時(shí)間。每次要重置計(jì)時(shí)器時(shí)都需要保存滴答聲,并與之進(jìn)行比較。


prev_time = pygame.time.get_ticks() #initialize tick counter

while running:

    clock.tick(FPS)

    time_difference = pygame.time.get_ticks() - prev_time

    if time_difference >= 5000:

        all_sprites.add(healthpack)

        prev_time = pygame.time.get_ticks() # reset counter

    for event in pygame.event.get():

        if event.type == pygame.QUIT:

            running = False


    all_sprites.update()


    screen.fill(BLACK)

    all_sprites.draw(screen)

    draw_text(screen, str(time_difference), 18, WIDTH / 2, 55)


    pygame.display.flip()


查看完整回答
反對(duì) 回復(fù) 2023-06-20
?
胡子哥哥

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊

他對(duì) 的修復(fù)是正確的time_difference,但您的代碼也存在另一個(gè)問題。


另一個(gè)問題是healthpack. 你正在這樣做all_sprites.add(healthpack),這只會(huì)把舊的healthpack放回列表中all_sprites。那個(gè)精靈離開屏幕并下降。你需要一個(gè)新的實(shí)例HealthPack。所以你需要像這樣修改@Barmar的解決方案:


prev_time = pygame.time.get_ticks() #initialize tick counter

while running:

    clock.tick(FPS)

    time_difference = pygame.time.get_ticks() - prev_time

    if time_difference >= 5000:

        healthpack = HealthPack()      # <-----------------   add this line

        all_sprites.add(healthpack)

        prev_time = pygame.time.get_ticks() # reset counter


查看完整回答
反對(duì) 回復(fù) 2023-06-20
  • 2 回答
  • 0 關(guān)注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)