猿问

如何让我的游戏帧不下降在pygame

我尝试过提高 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]

                    

 #########################################################    


绝地无双
浏览 116回答 1
1回答

紫衣仙女

关于滞后部分,有几件事:正如@Kingsley 所提到的,你是双循环,对碰撞检查的数量进行平方您正在检查不在屏幕上的对象您在迭代对象时删除对象(可能解释了 -1-1-1)试试这段代码。它移动得更快:#&nbsp; &nbsp; &nbsp;LIVES AND SPIKE&nbsp; &nbsp; lstdel = []&nbsp; &nbsp; for i,spk in enumerate(spikes):&nbsp; &nbsp; &nbsp; &nbsp; if spk.rect.left > 500 or spk.rect.left < 0: continue&nbsp; # off screen&nbsp; &nbsp; &nbsp; &nbsp; if player1.rect.colliderect(spk.rect):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if deaths > 0:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; deaths -= 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; talk = font.render("LIVES = "+str(deaths),True,(255,255,255))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; talkRect.center = ((100,90))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lstdel.append(i)&nbsp; &nbsp; for i in lstdel[::-1]:&nbsp; &nbsp; &nbsp; &nbsp; del spikes[i]&nbsp; #delete from end&nbsp;&nbsp;&nbsp; &nbsp; lstdel = []&nbsp; &nbsp; for i,pk in enumerate(pikes):&nbsp; &nbsp; &nbsp; &nbsp; if pk.rect.left > 500 or pk.rect.left < 0: continue&nbsp; # off screen&nbsp; &nbsp; &nbsp; &nbsp; if player1.rect.colliderect(pk.rect):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if deaths > 0:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; deaths -= 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; talk = font.render("LIVES = "+str(deaths),True,(255,255,255))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; talkRect.center = ((100,90))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lstdel.append(i)&nbsp; &nbsp; for i in lstdel[::-1]:&nbsp; &nbsp; &nbsp; &nbsp; del pikes[i]&nbsp; #delete from end&nbsp;&nbsp;&nbsp; &nbsp; lstdel = []&nbsp; &nbsp; for i, lv in enumerate(lives):&nbsp; &nbsp; &nbsp; &nbsp; if lv.rect.left > 500 or lv.rect.left < 0: continue&nbsp; # off screen&nbsp; &nbsp; &nbsp; &nbsp; if player1.rect.colliderect(lv.rect):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if deaths > 0:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; deaths += 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; talkRect.center = ((100,90))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lstdel.append(i)&nbsp; &nbsp; for i in lstdel[::-1]:&nbsp; &nbsp; &nbsp; &nbsp; del lives[i]&nbsp; #delete from end
随时随地看视频慕课网APP

相关分类

Python
我要回答