如何解决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+1
到 len(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 举报,一经查实,本站将立刻删除。