class Gravity(Sketchy): def setup(self): width, height = [600, 400] self.a = Attractor(width, height) self.balls = [] for i in range(0, 10): self.balls.append(Ball(width,height)) self.size(width, height) def update(self): for i in range(len(self.balls)): for j in range(len(self.balls)): if i != j: self.force = self.balls[j].attract(self.balls[i]) applyForce(self.balls[i], self.force) self.force = self.a.attract(self.balls[i]) applyForce(self.balls[i], self.force) self.balls[i].update(600, 400) def draw(self, g): g.background(1, 1, 1) for i in range(len(self.balls)): self.balls[i].draw(g) self.a.draw(g)
def ball_control(): att = Attractor(pygame.math.Vector2(mouse_X, mouse_Y)) att.draw(win) print(mouse_X, mouse_Y) if len(balls) < NUMBER_OF_BALLS: posInit = pygame.math.Vector2(random.randint(0, W), random.randint(0, H)) sz = random.randint(2, MAX_SIZE) ball = Ball(posInit, sz**2, sz, sz) balls.append(ball) flag = False for ball in balls: attForce = att.attract(ball) ball.add_force(attForce) ball.add_force(gForce) if flag: ball.add_force(wForce) flag = False else: ball.add_force(-wForce) flag = True # friction = - ball.vel # if friction.length() != 0: # friction.normalize() # friction *= 0.01 # ball.add_force(friction) ball.update() ball.check_edges() ball.draw(win) for i in range(len(balls)): if i < len(balls) - 1: balls[i].draw_line(balls[i + 1], win) else: balls[0].draw_line(balls[i], win)