Example #1
0
class Player(pygame.sprite.Sprite):
    def __init__(self,posx,posy,imgindex):
        pygame.sprite.Sprite.__init__(self)
        global playerimagePath
        self.posx = posx
        self.posy = 600 - posy
        self.pos = vec(posx,posy)
        self.velocity = vec(8,0)
        self.gravity = vec(0,1)
        self.step = 8
        self.spritesheet = SpriteSheet(playerimagePath)
        self.image = self.spritesheet.get_image(imgindex)
        self.image.set_colorkey((247,247,247))
        self.rect = self.image.get_rect()
        self.rect.center = (posx,posy)
        self.move_f = False
        self.move_b = False
        self.move_u = False
        self.grounded = False

    def update(self,spritegroup,coin_sprites):
        pygame.sprite.spritecollide(self,coin_sprites,True)
        self.gravity.y = 1
        hits = pygame.sprite.spritecollide(self,spritegroup,False)
        if hits and self.velocity.y>=0:
            self.pos.y = hits[0].rect.top + 1
            self.velocity.y = 0
            self.gravity.y = 0
            if self.move_u:
                self.move_u = False

        else:
            self.gravity.y = 1
            self.velocity.y += self.gravity.y
            self.pos.y += self.velocity.y + 0.5*self.gravity.y




        self.rect.midbottom = self.pos
    def move(self,dx,moveindex):
        if not self.move_u:
            if dx == 1:
                self.image = self.spritesheet.get_image(moveindex)
                self.pos.x += dx*self.velocity.x
            else:
                self.image = self.spritesheet.get_image(moveindex)
                self.image = pygame.transform.flip(self.image,True,False)
                self.pos.x += dx*self.velocity.x
        else:
            self.pos.x += dx*self.velocity.x

    def player_jump(self):

        if self.move_u:

            self.velocity.y += self.gravity.y
            self.pos.y += self.velocity.y + 0.5 * self.gravity.y
Example #2
0
    def __init__(self, scene, x, y):
        super().__init__(scene, x, y)
        self.groups = scene.all_sprites, scene.items, scene.keys

        # Animation
        self.animation_index = 0
        self.last_update = pygame.time.get_ticks()
        self.update_delay = KEY_IDLE_DELAY
        self.animation = []
        sprite_sheet = SpriteSheet(KEY_SPRITESHEET)
        self.image = sprite_sheet.get_image(0, 0, 32, 32)

        # Append sprites to animation array
        for x in range(0, 65, 32):
            self.animation.append(sprite_sheet.get_image(x, 0, 32, 32))
Example #3
0
    def __init__(self, scene, x, y, orientation, moves):
        super().__init__(scene, x, y, orientation, moves)
        self.groups = scene.all_sprites, scene.enemies
        pygame.sprite.Sprite.__init__(self, self.groups)
        self.health = 2

        sprite_sheet = SpriteSheet(GHOST_SPRITE_SHEET)
        self.image = sprite_sheet.get_image(0, 0, 32, 32)

        self.walking_up = []
        self.walking_down = []
        self.walking_left = []
        self.walking_right = []

        # Append sprites to walking arrays
        for x in range(0, 33, 32):
            self.walking_right.append(sprite_sheet.get_image(x, 0, 32, 32))
            self.walking_left.append(sprite_sheet.get_image(x, 32, 32, 32))
            self.walking_down.append(sprite_sheet.get_image(x, 64, 32, 32))
            self.walking_up.append(sprite_sheet.get_image(x, 96, 32, 32))

        self.damage_up = []
        self.damage_down = []
        self.damage_left = []
        self.damage_right = []

        # Append sprites to damage arrays
        for x in range(64, 128, 32):
            self.damage_right.append(sprite_sheet.get_image(x, 0, 32, 32))
            self.damage_left.append(sprite_sheet.get_image(x, 32, 32, 32))
            self.damage_down.append(sprite_sheet.get_image(x, 64, 32, 32))
            self.damage_up.append(sprite_sheet.get_image(x, 96, 32, 32))
Example #4
0
class Inventory(GameObject):
    def __init__(self, scene, x, y):
        super().__init__(scene, x, y)
        self.groups = scene.all_sprites, scene.hud
        pygame.sprite.Sprite.__init__(self, self.groups)

        self.sprite_sheet = SpriteSheet(INVENTORY_SPRITESHEET)
        self.image = self.sprite_sheet.get_image(0, 0, 32, 32)
        self.item_list = []

    def update(self):
        if len(self.item_list) > 0:
            if type(self.item_list[0]) == Key:
                self.image = self.sprite_sheet.get_image(0, 32, 32, 32)
        else:
            self.image = self.sprite_sheet.get_image(0, 0, 32, 32)

        self.rect.x = self.x * TILESIZE
        self.rect.y = self.y * TILESIZE
Example #5
0
def draw_mc_hp(surface, destination, x, y, perc_hp):
    # draw hearts in mc fov, updates in quarter incriments
    if perc_hp < 0:
        perc_hp = 0
    sprite_sheet = SpriteSheet(mc_hud_gfx)
    full_image = sprite_sheet.get_image(63, 0, 16, 16)
    three_quarters_image = sprite_sheet.get_image(79, 0, 16, 16)
    half_image = sprite_sheet.get_image(95, 0, 16, 16)
    quarter_image = sprite_sheet.get_image(111, 0, 16, 16)
    empty_image = sprite_sheet.get_image(127, 0, 16, 16)
    if perc_hp == 1.0:
        image = full_image
    elif perc_hp > .75:
        image = three_quarters_image
    elif perc_hp > .50:
        image = half_image
    elif perc_hp > .25:
        image = quarter_image
    else:
        image = empty_image
    surface.blit(image, [x, y])
Example #6
0
def draw_mc_level(surface, destination, x, y, level):
    # draws numbers represeting the level, currently capped at 9
    # displays a 0 for anything above 9
    sprite_sheet = SpriteSheet(mc_hud_gfx)
    images = [
        sprite_sheet.get_image(80, 224, 16, 16),
        sprite_sheet.get_image(96, 224, 16, 16),
        sprite_sheet.get_image(112, 224, 16, 16),
        sprite_sheet.get_image(128, 224, 16, 16),
        sprite_sheet.get_image(80, 240, 16, 16),
        sprite_sheet.get_image(96, 240, 16, 16),
        sprite_sheet.get_image(112, 240, 16, 16),
        sprite_sheet.get_image(128, 240, 16, 16),
        sprite_sheet.get_image(80, 256, 16, 16),
        sprite_sheet.get_image(96, 256, 16, 16),
    ]
    if level <= 9:
        image = images[level - 1]
    else:
        image = images[:-1]
    surface.blit(image, [x, y])
Example #7
0
    def __init__(self, scene, x, y, orientation, moves):
        super().__init__(scene, x, y)
        self.groups = scene.all_sprites, scene.enemies
        pygame.sprite.Sprite.__init__(self, self.groups)
        self.orientation = orientation
        self.moves = moves
        self.interactable = False
        self.collidable = False
        self.move_counter = 0
        self.move_counter_increment = 1
        self.reverse = False
        self.health = 1
        self.hit = False
        self.hit_detected = False
        self.attacking = False
        self.attack_detected = False

        if len(moves) > 0:
            self.direction = None

        # Animation
        self.animation_index = 0
        self.update_delay = ENEMY_SPEED
        self.attack_delay = ENEMY_ATTACK_DELAY
        self.last_update = pygame.time.get_ticks()
        self.last_idle_update = pygame.time.get_ticks()
        self.hit_delay = HIT_DELAY

        sprite_sheet = SpriteSheet(BAT_SPRITE_SHEET)
        self.image = sprite_sheet.get_image(0, 0, 32, 32)

        self.walking_up = []
        self.walking_down = []
        self.walking_left = []
        self.walking_right = []

        # Append sprites to walking arrays
        for x in range(0, 33, 32):
            self.walking_right.append(sprite_sheet.get_image(x, 0, 32, 32))
            self.walking_left.append(sprite_sheet.get_image(x, 32, 32, 32))
            self.walking_down.append(sprite_sheet.get_image(x, 64, 32, 32))
            self.walking_up.append(sprite_sheet.get_image(x, 96, 32, 32))

        self.damage_up = []
        self.damage_down = []
        self.damage_left = []
        self.damage_right = []

        # Append sprites to damage arrays
        for x in range(64, 128, 32):
            self.damage_right.append(sprite_sheet.get_image(x, 0, 32, 32))
            self.damage_left.append(sprite_sheet.get_image(x, 32, 32, 32))
            self.damage_down.append(sprite_sheet.get_image(x, 64, 32, 32))
            self.damage_up.append(sprite_sheet.get_image(x, 96, 32, 32))
Example #8
0
            self.last_shot = now
            bullet = BulletEnemy(self.rect.centerx, self.rect.bottom, player.x,
                                 player.y)
            sprites.add(bullet)
            bulletsEnemy.add(bullet)


def new_enemy():
    enemy = Enemy()
    sprites.add(enemy)
    enemies.add(enemy)


ss = SpriteSheet('Lightning.png')
player_imgs = []
player_imgs.append(ss.get_image(0, 0, 30, 30))
player_imgs.append(ss.get_image(32, 0, 30, 30))
player_imgs.append(ss.get_image(64, 0, 30, 30))
player_imgs.append(ss.get_image(96, 0, 30, 30))

ss1 = SpriteSheet('UFO.png')
enemy_imgs = []
enemy_imgs.append(ss1.get_image(0, 0, 30, 30))
enemy_imgs.append(ss1.get_image(32, 0, 30, 30))
enemy_imgs.append(ss1.get_image(64, 0, 30, 30))
enemy_imgs.append(ss1.get_image(96, 0, 30, 30))

player = Player()
for i in range(4):
    new_enemy()
PlayerSprite.add(player)
Example #9
0
        self.speedx = random.randrange(-3, 3)

    def update(self):
        """should spawn right in front of the player"""
        self.rect.y += self.speedy
        self.rect.x += self.speedx
        if self.rect.bottom < 0:
            self.kill()


class Missile(pygame.sprite.Sprite):
    def __init__(self, x, y):
        pygame.sprite.Sprite.__init__(self)
        self.image = missile_img
        self.image.set_colorkey(Commons.BLACK)
        self.rect = self.image.get_rect()
        self.rect.bottom = y
        self.rect.centerx = x
        self.speedy = -5

    def update(self):
        """should spawn right in front of the player"""
        self.rect.y += self.speedy
        if self.rect.bottom < 0:
            self.kill()


ss = SpriteSheet('Bullet_Collection.png')
bullet_img = ss.get_image(398, 255, 20, 20)
bullet_enemy_img = ss.get_image(320, 268, 18, 18)
Example #10
0
from sprites import SpriteSheet
from sprites import power_ups


class Pow(pygame.sprite.Sprite):
    def __init__(self, center):
        pygame.sprite.Sprite.__init__(self)
        self.type = random.choice(['upgrade', 'extra_live'])
        self.image = powerup_imgs[self.type]
        self.image.set_colorkey(Commons.BLACK)
        self.image = pygame.transform.scale(self.image, (30, 30))
        self.rect = self.image.get_rect()
        self.rect.center = center
        self.speedy = 1

    def update(self):
        """should spawn right in front of the player"""
        self.rect.y += self.speedy
        ## kill the sprite after it moves over the top border
        if self.rect.top > Commons.HEIGHT:
            self.kill()


ss = SpriteSheet('Power_Ups.png')

extra_live = ss.get_image(525, 30, 130, 130)
upgrade = ss.get_image(792, 33, 120, 120)
powerup_imgs = {}
powerup_imgs['upgrade'] = upgrade
powerup_imgs['extra_live'] = extra_live
Example #11
0
def draw_hud_bg(surface, destination, x, y):
    # draw the bg image for the rest of the hud
    sprite_sheet = SpriteSheet(mc_hud_gfx)
    image = sprite_sheet.get_image(0, 226, 16, 16)
    surface.blit(image, [x, y])
    image = sprite_sheet.get_image(0, 242, 16, 16)
    surface.blit(image, [x, y + 32])
    image = sprite_sheet.get_image(0, 258, 16, 16)
    surface.blit(image, [x, y + 64])
    image = sprite_sheet.get_image(0, 274, 16, 16)
    surface.blit(image, [x, y + 96])
    image = sprite_sheet.get_image(16, 226, 16, 16)
    surface.blit(image, [x + 32, y])
    image = sprite_sheet.get_image(16, 242, 16, 16)
    surface.blit(image, [x + 32, y + 32])
    image = sprite_sheet.get_image(16, 258, 16, 16)
    surface.blit(image, [x + 32, y + 64])
    image = sprite_sheet.get_image(16, 274, 16, 16)
    surface.blit(image, [x + 32, y + 96])
    image = sprite_sheet.get_image(32, 258, 16, 16)
    surface.blit(image, [x + 64, y + 64])
    image = sprite_sheet.get_image(48, 258, 16, 16)
    surface.blit(image, [x + 96, y + 64])
    image = sprite_sheet.get_image(64, 258, 16, 16)
    surface.blit(image, [x + 128, y + 64])
Example #12
0
def draw_iframes(surface, destination, x, y, who):
    # draw invincibility buff when invincible
    sprite_sheet = SpriteSheet(mc_hud_gfx)
    image = sprite_sheet.get_image(229, 54, 5, 5)
    if who.invincible == True:
        surface.blit(image, [x, y])