def update(self): # while a solid bullet if not self.destroyed: # Move if self.dir == "UP": self.y -= self.speed self.rect.y = int(self.y) elif self.dir == "DOWN": self.y += self.speed self.rect.y = int(self.y) elif isinstance(self.dir, tuple): self.y += self.dir[0] * self.speed self.rect.y = int(self.y) self.x += self.dir[1] * self.speed self.rect.x = int(self.x) # Check if reach bottom or top if self.rect.top >= self.screen.get_rect().bottom: GOL.del_go(self) elif self.rect.bottom <= self.screen.get_rect().top: GOL.del_go(self) # Check if hit anything if isinstance(self.ship, Player): for alien in GOL.get_golist(Aliens): if self.rect.colliderect(alien.rect): if alien.spawned and not alien.destroyed: alien.take_dmg(self.dmg) self.destroyed = True elif isinstance(self.ship, Aliens): if GOL.get_go(Player): if self.rect.colliderect(GOL.get_go(Player).rect): GOL.get_go(Player).take_dmg(self.dmg) self.destroyed = True
def draw(screen): # Reset screen screen.blit(space, (0, 0)) # Object drawing for object in GOL.get_golist(): object.draw() # Update and FPS font = pygame.font.SysFont("Arial MS", size=16) text = font.render(str(round(clock.get_fps(), 2)), False, (250, 250, 250)) screen.blit(text, (0, 0)) pygame.display.flip() clock.tick(60)
def update(self): # Check collision self.transparent = False for object in GOL.get_golist(): rect = getattr(object, "rect", "") if rect: if self.rect.colliderect(rect): self.transparent = True # Check variable # ! since a 0 height surface cant exist there is an IF statement if self.object and getattr(self.object, self.variable_name) > 0: self.var_height = getattr( self.object, self.variable_name) / self.var_max_value * ( self.height - self.thick * 2) self.s = pygame.Surface( (self.width - self.thick * 2, self.var_height)) self.s.fill(self.color) if self.transparent: self.s.set_alpha(100) self.bs.set_alpha(100) else: self.s.set_alpha(250) self.bs.set_alpha(250)
def lvl_ended(cls): for x in GOL.get_golist(): if isinstance(x, Aliens): return False return True
def check_collision(self): for alien in GOL.get_golist(Aliens): if self.rect.colliderect(alien.rect) and alien.destroyed == False: alien.destroyed = True self.take_dmg(alien.hp)
def update(): for object in GOL.get_golist(): object.update()