def handle_ball_collisions(self, balls):
     index_combo_list = list(itertools.combinations(range(0, len(balls)), 2))
     for i, j in index_combo_list:
         A, B = balls[i], balls[j]
         Av, Bv = A.velocity, B.velocity
         if calculations.ball_collision(A, B):
             Av, Bv = calculations.new_velocity(A, B)
             self.append_ball_collision(A, B)
         A.velocity, B.velocity = Av, Bv
         balls[i], balls[j] = A, B
     return balls
Ejemplo n.º 2
0
 def _handle_ball_collision(self, ball_list, collisions):
     index_combo_list = list(combinations(range(0, len(ball_list)), 2))
     for i, j in index_combo_list:
         ball_A, ball_B = ball_list[i], ball_list[j]
         DX, DY = ball_A.velocity
         dx, dy = ball_B.velocity
         if self._ball_collision(ball_A, ball_B):
             self._add_to_hits_this_frame_li(ball_A, ball_B)
             if not self._above_threshold_this_frame(ball_A, ball_B):
                 DXDY, dxdy = calculations.new_velocity(ball_A, ball_B)
                 DX, DY = DXDY
                 dx, dy = dxdy
         ball_A.velocity = DX, DY
         ball_B.velocity = dx, dy
         ball_list[i] = ball_A
         ball_list[j] = ball_B
     return ball_list