Example #1
0
    def __init__(self, scr, view_point, explosions, track):
        """Input parameters:
        scr - Surface for drawing;
        view_point - ViewPoint class instance;
        explosions - Explosions class instance for asteroid blowing;
        track - Track class instance (needed for spawning)."""
        self.scr = scr
        self.view_pt = view_point
        self.explosions = explosions
        self.track = track
        self.spawn_density = 0
        # Format: [(center_x, center_y),...]
        self.spawns = []
        self.images = []
        self.masks = []
        for filename in ASTEROID_FILES:
            image = pygame.image.load(f"img/{filename}")
            self.images.append(image)

            # Creating bitmasks for each frame of each asteroid image
            asteroid = AnimatedSprite(image, self.scr, self.view_pt,
                                      FRAME_COLS, FRAME_ROWS)
            asteroid_masks = []
            for frame in range(0, asteroid.get_max_frame() + 1):
                mask_image = pygame.Surface(asteroid.rect.size,
                                            pygame.SRCALPHA, image)
                mask_image.fill((0, 0, 0, 0))
                mask_image.blit(image, (0, 0), asteroid._get_frame_rect(frame))
                asteroid_masks.append(pygame.mask.from_surface(mask_image))
            self.masks.append(asteroid_masks)

        self.items = pygame.sprite.Group()
Example #2
0
    def on_animated_sprite_menu_item_activate(self, menuitem, data=None):
        filename = self.get_open_filename()

        if filename and self.drawing_area:
            x, y, lines, columns = self.get_sprite_data()

            if x:
                #frame_pixbuf = tools.get_frame_pixbuf(image_frames, (0,0,101,101))
                #pixmap, mask = frame_pixbuf.render_pixmap_and_mask()

                animated_sprite = AnimatedSprite(filename, x, y, lines,
                                                 columns)
                name = self.sprite_name.next()
                self.animated_sprites_draw[name] = animated_sprite

                self.draw_background()
                self.draw_sprites()

                # Adding the animated image to the dictionary that
                # contains all animated sprites to be drawn
                animated_image = {
                    "x": x,
                    "y": y,
                    "lines": lines,
                    "columns": columns,
                    "filename": filename,
                    "animations": {},
                }

                self.animated_sprites[name] = animated_image
Example #3
0
def generate_avatar(unit_type: str, stack_count, cell: Cell = None):
    with open('pdata/wcAnimations.json', 'r') as file:
        sheet_data = json.load(file)
        sprite = AnimatedSprite(
            os.path.join('assets', 'unit', unit_type) + '.png',
            **sheet_data[unit_type])

    with open('pdata/wcUnits.json', 'r') as file:
        unit_data = json.load(file)
        avatar = Avatar(sprite, stack_count, cell, **unit_data[unit_type])

    return avatar
Example #4
0
 def add(self, center_x, center_y, explosion_ind=None):
     """Adds new explosion animation.
     Input parameters:
     center_x, center_y - absolute center coordinates of animation;
     explosion_ind - index of an animation in the list; if None then
     the animation is selected randomly (except small explosion)."""
     if explosion_ind == None:
         explosion_ind = randint(BLAST_EXPLOSION_IND, DOUBLE_EXPLOSION_IND)
     explosion = AnimatedSprite(self.images[explosion_ind], self.scr,
                                self.view_pt, FRAME_COLS, FRAME_ROWS)
     explosion.set_center(center_x, center_y)
     explosion.repeat = False
     self.items.add(explosion)
Example #5
0
 def __init__(self, scr, view_point, explosions):
     """Input parameters:
     scr - Surface for drawing;
     view_point - ViewPoint class instance;
     explosions - Explosions class instance for ship destroying."""
     self.scr = scr
     self.view_pt = view_point
     self.explosions = explosions
     self.image = pygame.image.load(f'img/{SHIP_FILE}')
     self.mask = pygame.mask.from_surface(self.image)
     self.rect = self.image.get_rect()
     self.x = -(self.rect.width / 2)
     self.y = self.rect.height
     self._update_rect()
     self.laser = Laser(self.scr, self.view_pt)
     self._update_laser_pos()
     self.jet_image = pygame.image.load(f'img/{JET_FILE}')
     self.jets = {
         'left':
         AnimatedSprite(self.jet_image,
                        self.scr,
                        self.view_pt,
                        JET_FRAME_COLS,
                        JET_FRAME_ROWS,
                        reverse=True),
         'right':
         AnimatedSprite(self.jet_image,
                        self.scr,
                        self.view_pt,
                        JET_FRAME_COLS,
                        JET_FRAME_ROWS,
                        reverse=True),
     }
     self._update_jets_pos()
     self.speed = 0
     self._reset_user_control()
     self.status = STATUS_NORMAL
     self._reset_progress()
Example #6
0
 def __init__(self, x, y, speed):
     pygame.sprite.Sprite.__init__(self)
     # (x, y) represents bottom center
     self.x = x
     self.y = y
     self.time = 0
     self.speed = speed
     self.interval = z_walk.animSpeed / abs(self.speed)
     self.dead = False
     self.deadShot = False
     self.size = 25
     self.animSprite = AnimatedSprite(ZOMBIE_SPRITE_SHEET,
                                      [z_walk, z_hit, z_die], 'walk')
     self.animSprite.loadImages()
     self.rect = pygame.rect.Rect(
         (self.x - self.size / 2, self.y - self.size, self.size, self.size))
     self.image = pygame.Surface((self.size, self.size))
     self.hp = 100
Example #7
0
GAMEOVER = False
keys = [False for i in range(1000)]

z_walk = SpriteConfig(
    pygame.Rect(6, 90, K_WIDTH - 1, 68),  # capture rect of all
    12,  # number
    'walk',  # name
    40,  # max width per tile
    3,  # border
    0.0,  # look buffer
    8,  # frames / animation_frame
    0,  # skipping buffer - how many pixels to skip after green line
)
z_die = SpriteConfig(pygame.Rect(9, 395, 420, 70), 8, 'die', 48, 3, 0.0, 4, 0)
z_hit = SpriteConfig(pygame.Rect(9, 395, 420, 70), 2, 'hit', 48, 3, 0.0, 10, 0)
ex_zomb = AnimatedSprite(ZOMBIE_SPRITE_SHEET, [z_walk, z_hit, z_die], 'walk')
ex_zomb.loadImages()
kirb = AnimatedSprite(
    KIRBY_SPRITE_SHEET,
    [idle, walk, attack, flip, spin, land, ascend, spin_attack, shoot], "idle")
SCREEN.blit(KIRBY_SPRITE_SHEET, (0, 0))
kirb.loadImages(SCREEN)
enemies = []
bullets = []


def generateZombie():
    x = 0
    y = random.randint(0, HEIGHT - UI_SIZE * 2) + UI_SIZE
    dir = 1 + DIFFICULTY
    if bool(random.randint(0, 1)):