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

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

如何讓我的游戲幀不下降在pygame

如何讓我的游戲幀不下降在pygame

絕地無雙 2023-06-20 15:52:14
我嘗試過提高 fps 但那沒有用,我嘗試的最后一件事是刪除一些更新命令但那沒有用是什么讓我的游戲滯后#####################################? ? # LIVES AND SPIKE? ? for spike in spikes:? ? ? ? for one in range(len(spikes)-1-1-1):? ? ? ? ? ? if player1.rect.colliderect(spikes[one].rect):? ? ? ? ? ? ? ? if deaths > 0:? ? ? ? ? ? ? ? ? ? deaths -= 1? ? ? ? ? ? ? ? ? ? talk = font.render("LIVES = "+str(deaths),True,(255,255,255))? ? ? ? ? ? ? ? ? ? talkRect.center = ((100,90))? ? ? ? ? ? ? ? ? ? del spikes[one]? ? for pike in pikes:? ? ? ? for one in range(len(pikes)-1-1-1):? ? ? ? ? ? if player1.rect.colliderect(pikes[one].rect):? ? ? ? ? ? ? ? if deaths > 0:? ? ? ? ? ? ? ? ? ? deaths -= 1? ? ? ? ? ? ? ? ? ? talk = font.render("LIVES = "+str(deaths),True,(255,255,255))? ? ? ? ? ? ? ? ? ? talkRect.center = ((100,90))? ? ? ? ? ? ? ? ? ? del pikes[one]? ? for live in lives:? ? ? ? for one in range(len(lives)-1-1-1):? ? ? ? ? ? if player1.rect.colliderect(lives[one].rect):? ? ? ? ? ? ? ? if deaths > 0:? ? ? ? ? ? ? ? ? ? deaths += 1? ? ? ? ? ? ? ? ? ? talkRect.center = ((100,90))? ? ? ? ? ? ? ? ? ? del lives[one]? ? ? ? ? ? ? ? ? ???#########################################################? ??
查看完整描述

1 回答

?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

關于滯后部分,有幾件事:

  • 正如@Kingsley 所提到的,你是雙循環,對碰撞檢查的數量進行平方

  • 您正在檢查不在屏幕上的對象

  • 您在迭代對象時刪除對象(可能解釋了 -1-1-1)

試試這段代碼。它移動得更快:

#     LIVES AND SPIKE

    lstdel = []

    for i,spk in enumerate(spikes):

        if spk.rect.left > 500 or spk.rect.left < 0: continue  # off screen

        if player1.rect.colliderect(spk.rect):

            if deaths > 0:

                deaths -= 1

                talk = font.render("LIVES = "+str(deaths),True,(255,255,255))

                talkRect.center = ((100,90))

                lstdel.append(i)

    for i in lstdel[::-1]:

        del spikes[i]  #delete from end

  

    lstdel = []

    for i,pk in enumerate(pikes):

        if pk.rect.left > 500 or pk.rect.left < 0: continue  # off screen

        if player1.rect.colliderect(pk.rect):

            if deaths > 0:

                deaths -= 1

                talk = font.render("LIVES = "+str(deaths),True,(255,255,255))

                talkRect.center = ((100,90))

                lstdel.append(i)

    for i in lstdel[::-1]:

        del pikes[i]  #delete from end

  

    lstdel = []

    for i, lv in enumerate(lives):

        if lv.rect.left > 500 or lv.rect.left < 0: continue  # off screen

        if player1.rect.colliderect(lv.rect):

            if deaths > 0:

                deaths += 1

                talkRect.center = ((100,90))

                lstdel.append(i)

    for i in lstdel[::-1]:

        del lives[i]  #delete from end


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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