Пример #1
0
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)
Пример #2
0
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)