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)
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))
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
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)
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()
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
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)