예제 #1
0
 def __init__(self, coordinates, group):
     self.full_heart = load_image(r'images\ui', 'ui_heart_full.png')
     self.half_heart = load_image(r'images\ui', 'ui_heart_half.png')
     self.empty_heart = load_image(r'images\ui', 'ui_heart_empty.png')
     super(Heart, self).__init__(group)
     self.coordinates = coordinates
     self.image = self.full_heart
     self.rect = self.image.get_rect()
     self.rect = self.rect.move(coordinates)
예제 #2
0
 def __init__(self, x, y, animated_sprites, all_sprites):
     super(Portal, self).__init__(animated_sprites, all_sprites)
     self.frames = []
     self.cut_sheet(load_image('Tiles\\Animated', 'portal.png'), 1, 8)
     self.cur_frame = 0
     self.image = self.frames[self.cur_frame]
     self.mask = pygame.mask.from_surface(self.image)
     self.rect = self.rect.move(16 * (x - 1), 16 * (y - 2))
예제 #3
0
파일: Player.py 프로젝트: J-Zema/Icy-Tower
    def __init__(self):
        self.x = 30
        self.y = 500
        self.score = -10  # odjąc podstawową platforme

        self.spritesheet_image = load_image('spritesheet.png')
        self.spritesheet = []  #lista na wygląd gracza

        # Gdy stoi w miejscu
        # SRCALPHA – oznacza, że format pikseli będzie zawierać ustawienie alfa (przezroczystości)
        self.cropped = pygame.Surface((33, 57), pygame.SRCALPHA, 32)
        self.cropped.blit(self.spritesheet_image, (0, 0), (0, 0, 33, 57))
        self.cropped2 = pygame.Surface((33, 57), pygame.SRCALPHA, 32)
        self.cropped2.blit(self.spritesheet_image, (0, 0), (37, 0, 33, 57))
        self.cropped3 = pygame.Surface((33, 57), pygame.SRCALPHA, 32)
        self.cropped3.blit(self.spritesheet_image, (0, 0), (75, 0, 33, 57))
        self.spritesheet.append(self.cropped)
        self.spritesheet.append(self.cropped2)
        self.spritesheet.append(self.cropped3)

        # Gdy idziemy w prawo
        self.cropped4 = pygame.Surface((33, 57), pygame.SRCALPHA, 32)
        self.cropped4.blit(self.spritesheet_image, (0, 0), (0, 56, 33, 57))
        self.cropped5 = pygame.Surface((33, 57), pygame.SRCALPHA, 32)
        self.cropped5.blit(self.spritesheet_image, (0, 0), (37, 56, 33, 57))
        self.cropped6 = pygame.Surface((33, 57), pygame.SRCALPHA, 32)
        self.cropped6.blit(self.spritesheet_image, (0, 0), (75, 56, 33, 57))
        self.spritesheet.append(self.cropped4)
        self.spritesheet.append(self.cropped5)
        self.spritesheet.append(self.cropped6)

        #odwróć - gdy idziemy w lewo
        self.spritesheet.append(
            pygame.transform.flip(self.cropped4, True, False))
        self.spritesheet.append(
            pygame.transform.flip(self.cropped5, True, False))
        self.spritesheet.append(
            pygame.transform.flip(self.cropped6, True, False))

        # Gdy skaczemy
        self.cropped7 = pygame.Surface((33, 57), pygame.SRCALPHA, 32)
        self.cropped7.blit(self.spritesheet_image, (0, 0), (75, 112, 33, 57))
        self.spritesheet.append(self.cropped7)
        self.spritesheet.append(self.cropped7)
        self.spritesheet.append(self.cropped7)

        self.sprite_index_x = 0
        self.sprite_index_y = 0
        self.frame_counter = 0
        self.frame_delay = 9  #opóźnienie
예제 #4
0
    def __init__(self, window_width, window_height):

        self.size = window_width, window_height
        self.window_width = window_width
        self.window_height = window_height

        self.screen = pygame.display.set_mode(self.size)
        pygame.display.set_icon(load_image('images', 'icon.png'))
        pygame.display.set_caption('The Dungeons')
        self.clock = pygame.time.Clock()

        self.camera = Camera.Camera(self.window_width, self.window_height)
        self.floor = namedtuple('Floor', ['type', 'name'])('floor', 0)
        self.player = None

        # initialize sprites
        self.game_over_button_sprite = pygame.sprite.GroupSingle()
        self.main_button_sprites = pygame.sprite.Group()
        self.portal_sprite = pygame.sprite.GroupSingle()

        self.player_sprite = pygame.sprite.GroupSingle()
        self.sword_sprite = pygame.sprite.GroupSingle()
        self.animated_sprites = pygame.sprite.Group()
        self.potion_sprites = pygame.sprite.Group()
        self.floor_sprites = pygame.sprite.Group()
        self.enemy_sprites = pygame.sprite.Group()
        self.boxes_sprites = pygame.sprite.Group()
        self.side_sprites = pygame.sprite.Group()
        self.all_sprites = pygame.sprite.Group()
        self.ui_sprites = pygame.sprite.Group()

        self.tiles = Tiles.return_tiles()
        self.connection = sqlite3.connect('database.db')

        # special player variables
        self.player_health = 20
        self.player_score = 0

        self.FPS = 60  # const
        self.k = 19  # special variable which need for right room's drawing
        self.bg_color = pygame.Color(29, 16, 70)

        sound = pygame.mixer.Sound('data\\soundtrack1.wav')
        sound.play(10)
        sound.set_volume(0.03)
예제 #5
0
    def game(self):
        player_x, player_y = self.load_map(generate_field())

        self.player = Player.Player(load_image('images',
                                               'idle_anim.png'), player_x,
                                    player_y, 1, 4, self.player_sprite,
                                    self.all_sprites, self.animated_sprites,
                                    self.player_health, self.player_score)
        animate_index = 0

        for index in range(10):
            UI.Heart((32 + index * 24, 32), self.ui_sprites)

        UI.Text(f'Your score: {self.player.score}', self.ui_sprites)

        # game loop
        while True:
            for game_event in pygame.event.get():
                if game_event.type == pygame.QUIT:
                    self.terminate()
                if game_event.type == pygame.KEYDOWN:
                    if game_event.key == pygame.K_SPACE:
                        self.player.check_enemies(self.enemy_sprites)
                    if game_event.key == pygame.K_RETURN:
                        self.potion_sprites.update(self.player)

            if pygame.key.get_pressed()[pygame.K_UP] == 1:
                self.player.move(3,
                                 self.side_sprites,
                                 self.boxes_sprites,
                                 up=True)
            if pygame.key.get_pressed()[pygame.K_RIGHT] == 1:
                self.player.move(3,
                                 self.side_sprites,
                                 self.boxes_sprites,
                                 left=True)
            if pygame.key.get_pressed()[pygame.K_DOWN] == 1:
                self.player.move(3,
                                 self.side_sprites,
                                 self.boxes_sprites,
                                 down=True)
            if pygame.key.get_pressed()[pygame.K_LEFT] == 1:
                self.player.move(3,
                                 self.side_sprites,
                                 self.boxes_sprites,
                                 right=True)

            self.screen.fill(self.bg_color)

            self.all_sprites.draw(self.screen)
            self.ui_sprites.draw(self.screen)
            self.ui_sprites.update(f'Your score: {self.player.score}')
            self.portal_sprite.draw(self.screen)
            self.player_sprite.draw(self.screen)

            self.camera.update(self.player)

            for sprite in self.all_sprites:
                self.camera.apply(sprite)

            if animate_index % 6 == 0:
                self.player_sprite.update()
                self.enemy_sprites.update(self.player)

            if animate_index % 24 == 0:
                self.animated_sprites.update()
                self.portal_sprite.update(self.player)

                for enemy_sprite in self.enemy_sprites:
                    enemy_sprite.check_player(self.player)

            health = self.player.health
            for sprite in self.ui_sprites:
                if isinstance(sprite, UI.Heart):
                    if not health - 2 >= 0:
                        if health - 2 == -1:
                            sprite.image = sprite.half_heart
                        elif health - 2 <= -2:
                            sprite.image = sprite.empty_heart
                    else:
                        sprite.image = sprite.full_heart
                    health -= 2

            animate_index += 1

            if self.player.health <= 0 or self.player.die:
                self.player.die = True
                self.game_over()
                return None

            if self.player.next_level:
                self.player.next_level = True
                self.next_level()
                return None

            self.clock.tick(self.FPS)
            pygame.display.flip()
예제 #6
0
def return_tiles():
    tiles = {
        'corners': {
            'top_left': load_image('Tiles\\Sides', 'side_top_left.png'),
            'top_right': load_image('Tiles\\Sides', 'side_top_right.png'),
            'bottom_right': load_image('Tiles\\Sides', 'side_bottom_left.png'),
            'bottom_left': load_image('Tiles\\Sides', 'side_bottom_right.png')
        },
        'top_sides': {
            'left': load_image('Tiles\\Sides', 'top_left.png'),
            'mid': load_image('Tiles\\Sides', 'top_mid.png'),
            'right': load_image('Tiles\\Sides', 'top_right.png')
        },
        'walls_sides': {
            'left': load_image('Tiles\\Sides', 'left.png'),
            'mid': load_image('Tiles\\Sides', 'mid.png'),
            'right': load_image('Tiles\\Sides', 'right.png'),
            'right_corner': load_image('Tiles\\Sides', 'side_front_left.png'),
            'left_corner': load_image('Tiles\\Sides', 'side_front_right.png')
        },
        'sides': {
            'left': load_image('Tiles\\Sides', 'side_mid_left.png'),
            'right': load_image('Tiles\\Sides', 'side_mid_right.png')
        },
        'items': {
            'box': load_image('Tiles\\Items', 'crate.png'),
            'potion': load_image('Tiles\\Items', 'health_potion.png')
        },
        'floor': [
            load_image('Tiles\\Floor', '1.png'),
            load_image('Tiles\\Floor', '2.png'),
            load_image('Tiles\\Floor', '3.png'),
            load_image('Tiles\\Floor', '5.png'),
        ],
        'animated': {
            'spikes': load_image('Tiles\\Animated', 'spikes_anim.png'),
            'portal': load_image('Tiles\\Animated', 'portal.png')
        },
        'enemy': {
            'enemy': load_image('images', 'enemy.png')
        }
    }

    return tiles
예제 #7
0
 def __init__(self, x, y, potion_sprites, all_sprites):
     super(Potion, self).__init__(potion_sprites, all_sprites)
     self.image = load_image('Tiles\\Items', 'health_potion.png')
     self.rect = self.image.get_rect().move(16 * x, 16 * y)
     self.mask = pygame.mask.from_surface(self.image)