def update(self, scroll_speed, heliose): for collision in self.collisions: self.mass += collision.mass self.internal_force = consts.G * self.mass / self.radius ** 2 mx, my = heliose.rect.center x, y = self.rect.center r = sqrt((x - mx) ** 2 + (my - y) ** 2) pull_force = consts.G * self.mass * heliose.mass / r ** 2 acc = consts.G * (heliose.mass + self.mass) / r ** 2 self.dx += acc * (mx - x) / r self.dy += acc * (my - y) / r self.df = pull_force - heliose.internal_force if self.df > 0: self.extraction = True else: self.extraction = False self.image = image.animate("nemesis", self.frame / consts.period).convert() self.image.set_colorkey((0, 0, 0)) self.frame += 1 self.radius = 8 * int(log(self.mass, 5)) self.image = pygame.transform.scale(self.image, (self.radius * 2, self.radius * 2)) self.rect = self.image.get_rect() self.rect.center = x, y self.rect.x += self.dx + scroll_speed[0] * 2 self.rect.y += self.dy + scroll_speed[1] * 2 self.rect.right %= consts.screen_size[0] * 2 self.rect.bottom %= consts.screen_size[1] * 2 self.frame += 1
def animate(self): self.image = image.animate(self.image_name, self.frame/consts.period).convert() self.image.set_colorkey((0, 0, 0)) self.image = pygame.transform.scale(self.image, [self.radius*2]*2) self.rect = self.image.get_rect() self.rect.center = (consts.screen_size[0]/2, consts.screen_size[1]/2) self.frame += 1
def __init__(self): pygame.sprite.Sprite.__init__(self) self.frame = 0 self.image = image.animate('nemesis', self.frame) self.rect = self.image.get_rect() self.dx, self.dy = 0, 0 self.mass = 0
def update(self): for collision in self.particle_collision: self.mass += collision.mass self.image = image.animate('heliose', self.frame/consts.period).convert() self.image.set_colorkey((0, 0, 0)) self.frame += 1 self.radius = 8*int(math.log(self.mass, 5)) self.image = pygame.transform.scale(self.image, (self.radius*2, self.radius*2)) self.rect = self.image.get_rect() self.rect.center = consts.screen_size[0]/2, consts.screen_size[1]/2
def __init__(self): pygame.sprite.Sprite.__init__(self) self.image = image.animate('heliose', 0) self.rect = self.image.get_rect() self.particle_collision = [] self.rect.center = consts.screen_size[0]/2, consts.screen_size[1]/2 self.mass = 100 self.frame = 0 self.radius = 8*int(math.log(self.mass, 10))
def __init__(self): pygame.sprite.Sprite.__init__(self) self.extraction = False self.frame = 0 self.collisions = [] self.image = image.animate("nemesis", self.frame) self.rect = self.image.get_rect() self.dx, self.dy = 0, 0 self.dy = 0 self.mass = 10000 self.radius = 8 * int(log(self.mass, 5))
def __init__(self, name): pygame.sprite.Sprite.__init__(self) self.name = name self.frame = random.randint(0, 3) self.image = image.animate('hydrospiro', 0) self.rect = self.image.get_rect() self.rect.center = random.randint(0, consts.screen_size[0]), random.randint(0, consts.screen_size[1]) self.mass = 10 self.dx, self.dy = 0, 0 self.image.set_colorkey((0, 0, 0)) self.radius = int(math.log(self.mass, 10))
def __init__(self, name): pygame.sprite.Sprite.__init__(self) self.name = name self.frame = rnd(0, 3) self.image = image.animate("hydrospiro", 0) self.rect = self.image.get_rect() self.rect.center = ( rnd(-consts.screen_size[0], consts.screen_size[0] * 2), rnd(-consts.screen_size[1], consts.screen_size[1] * 2), ) self.mass = 1.0 self.dx, self.dy = 0, 0 self.image.set_colorkey((0, 0, 0)) self.radius = int(log(self.mass, 10))
def update(self, nemesis): if nemesis: px, py = self.rect.center mx, my = nemesis.rect.center r = sqrt((mx - px) ** 2 + (my - py) ** 2) acc = consts.G * nemesis.mass self.dx = acc * (mx - px) / r self.dy = acc * (my - py) / r else: for collision in self.particle_collision: self.mass += collision.mass self.internal_force = consts.G * self.mass / self.radius ** 2 self.image = image.animate("heliose", self.frame / consts.period).convert() self.image.set_colorkey((0, 0, 0)) self.frame += 1 self.radius = 8 * int(log(self.mass, 5)) self.image = pygame.transform.scale(self.image, (self.radius * 2, self.radius * 2)) self.rect = self.image.get_rect() self.rect.center = (consts.screen_size[0] / 2 + self.dx, consts.screen_size[1] / 2 + self.dy)
def update(self, scroll_speed, attractor=None, pos=None, mass=None): px, py = self.rect.center if attractor: mx, my = pos r = sqrt((mx - px) ** 2 + (my - py) ** 2) if r: acc = consts.G * mass / r ** 2 self.dx += acc * (mx - px) / r self.dy += acc * (my - py) / r else: # if px < 0 or px > consts.screen_size[0] or py < 0 or py > consts.screen_size[1]: # self.kill() # for particle in self.col: # self.mass += particle.mass self.image = image.animate("hydrospiro", self.frame / consts.period).convert() self.image.set_colorkey((0, 0, 0)) self.rect.x += self.dx + scroll_speed[0] self.rect.y += self.dy + scroll_speed[1] self.frame += 1
def animate(self): self.image = image.animate(self.image_name, self.frame/consts.period) self.image.set_colorkey((0, 0, 0)) self.frame += 1
def update(self): self.image = image.animate('nemesis', self.frame) self.rect.x += self.dx self.rect.y += self.dy self.frame += 1