亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何處理pygame中不同組件的時間

如何處理pygame中不同組件的時間

森林海 2022-12-20 15:04:41
我正在制作一個 pygame 游戲,一個人可以從商店購買炸彈。玩家也可以投下他購買的炸彈。我需要一種方法讓每個炸彈在投下 3 秒后消失。在下面的代碼中,我只能投下炸彈,但是我嘗試了各種方法但都失敗了。import pygameimport randompygame.font.init()width = 900height = 600screen = pygame.display.set_mode([width, height])walkRight = [pygame.image.load('R1.png'), pygame.image.load('R2.png'), pygame.image.load('R3.png'),             pygame.image.load('R4.png'), pygame.image.load('R5.png'), pygame.image.load('R6.png'),             pygame.image.load('R7.png'), pygame.image.load('R8.png'), pygame.image.load('R9.png')]walkLeft = [pygame.image.load('L1.png'), pygame.image.load('L2.png'), pygame.image.load('L3.png'),            pygame.image.load('L4.png'), pygame.image.load('L5.png'), pygame.image.load('L6.png'),            pygame.image.load('L7.png'), pygame.image.load('L8.png'), pygame.image.load('L9.png')]char = pygame.image.load('standing.png')bomb_pic = pygame.transform.scale(pygame.image.load('bomb.png'), (20,20))bomb_explosion = pygame.transform.scale(pygame.image.load('explosion1.png'), (40,40))# char_rect = char.get_rect()enemy_Left = [pygame.image.load('L1E.png'), pygame.image.load('L2E.png'), pygame.image.load('L3E.png'),            pygame.image.load('L4E.png'), pygame.image.load('L5E.png'), pygame.image.load('L6E.png'),            pygame.image.load('L7E.png'), pygame.image.load('L8E.png'), pygame.image.load('L9E.png')] x = 50y = 50width = 40height = 60vel = 5isJump = FalsejumpCount = 10left = Falseright = Falsedown = Falseup = FalsewalkCount = 0enemy_vel = 2enemy_list = []shop = pygame.transform.scale(pygame.image.load("shop.png"), (60, 60))clock = pygame.time.Clock()FPS = 60font = pygame.font.Font('freesansbold.ttf', 32)items_font = pygame.font.Font('freesansbold.ttf', 16)bombs =[]bag = {'bomb': 0}print(bag["bomb"])
查看完整描述

1 回答

?
慕容森

TA貢獻1853條經驗 獲得超18個贊

用于pygame.time.get_ticks()獲取當前時間(以毫秒為單位)。計算炸彈必須消失的時間。將時間存儲到列表中bombs。該列表bombs必須包含位置和時間的元組。
如果時間已到,則從列表中刪除炸彈:

def redrawGameWindow():

    current_time = pygame.time.get_ticks()

    # [...]


    for i in reversed(range(len(bombs))):

        pos, end_time = bombs[i]

        if current_time > end_time

            bombs.pop(i)

        else:

            screen.blit(bomb_pic, pos)

def main():

    # [...]


    while run:


        current_time = pygame.time.get_ticks()

        for event in pygame.event.get():

            if event.type == pygame.QUIT:

                run = False


            # [...]


            if event.type == pygame.KEYDOWN:

                if event.key == pygame.K_SPACE and bag["bomb"] >= 1:

                    pos = x + char.get_width()/2, y + char.get_height() - 20

                    end_time = current_time + 3000 # 3000 milliseconds = 3 seconds

                    bombs.append((pos, end_time))

                    bag["bomb"] -= 1


        redrawGameWindow()


查看完整回答
反對 回復 2022-12-20
  • 1 回答
  • 0 關注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號