微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pygame 对象实例速度增加

如何解决Pygame 对象实例速度增加

我制作了一个球被另一个球追赶的伪游戏,当我改变红球(跟随球)的数量时,游戏的速度会增加,我想这是由于循环的迭代导致移动并在主循环中找到碰撞,游戏中的球越多,迭代次数越多,因此球的速度增加。有关如何解决此问题的任何建议?

 id  name         child_count
 --+--------------+---------
 1  root_a         0
 2  root_b         1
 3  sub_b1         2
 4  sub_sub_b1_1   0
 5  sub_sub_b1_2   0

解决方法

一个明显的问题是内部循环从 2 运行到 len(lista_bolas)。由于您只想移动每个球一次并且只想检查球之间的碰撞一次,因此从 indice+1len(lista_bolas) 运行内部循环就足够了。
此外,您需要在外循环中移动每个球一次,而不是在内循环中重复移动:

while not terminar:
    # [...]

    for indice in range(2,len(lista_bolas)):
        lista_bolas[indice].mover(posiciones_xy[indice],pos_flechas,indice) 

        for indicej in range(indice+1,len(lista_bolas)):
            
            colision,dist_col =  lista_bolas[indice].colision(posiciones_xy[indice],posiciones_xy[indicej],indice,tamaño) 
            lista_bolas[indice].reaccion(posiciones_xy[indice],indice)
                               
            lista_bolas[indice].colision_estatica(posiciones_xy[indice],[ancho / 2,alto / 2],indice) # colision estatica bola central vs bolas perseguidor
            lista_bolas[indice].colision_estatica(posiciones_xy[0],0) # colision estatica bola central con bola azul
            
            colision,dist_col =  lista_bolas[0].colision(posiciones_xy[0],posiciones_xy[indice],tamaño)  # colision con la bola principal
            lista_bolas[0].reaccion(posiciones_xy[0],0) # reaccion bola principal
    
        lista_bolas[indice].draw()
    
    bola_ppal.draw()
    bola_central.draw()
    pygame.display.update()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。