def handle_input(self, event): if event.type != KEYDOWN: return if event.key == K_p: trigger("Play Again", 0) elif event.key == K_x: trigger("Exit Game", 0)
def test_player_collision(self, player_rect, is_dashing): if not self.rect.colliderect(player_rect): return NONE cropped_rect = self.rect.clip(player_rect) killed_player = cropped_rect.width < cropped_rect.height and not is_dashing if not killed_player: trigger("Enemy Killed", (self.rect.x, self.rect.y)) return KILLED_PLAYER if killed_player else GET_KILLED
def handle_input(self, event): if event.type != KEYDOWN: return if event.key == K_n: trigger("New Game", 0) elif event.key == K_x: trigger("Exit Game", 0) elif event.key == K_r: if self.is_about: self.is_about = False elif self.is_option: self.is_option = False elif not self.is_about and event.key == K_a: self.is_about = True elif not self.is_option and event.key == K_o: self.is_option = True
def test_player_collision(self, player_rect): if not self.rect.colliderect(player_rect): return False, self.obtainable if self.action == 'OBTAIN': self.on_player_collide(player_rect) return True, self.obtainable cropped_rect = self.rect.clip(player_rect) broken = cropped_rect.width >= cropped_rect.height and cropped_rect.width >= self.rect.width * 0.3 if broken: self.action, self.frame = change_action(self.action, self.frame, 'OBTAIN') self.obtainable = True trigger("On Crate Broken", 0) else: if player_rect.left < self.rect.left: player_rect.right = self.rect.left else: player_rect.left = self.rect.right return True, False
def test_player_collision(self, player_rect, is_dashing): if self.elapsed_dmg_cooldown > 0: self.elapsed_dmg_cooldown -= DELTA return if not self.locked_target and self.elapsed_atk_cooldown <= 0: self.atk_target = pygame.Rect(player_rect.x, player_rect.bottom, 4, 1) self.locked_target = True self.elapsed_atk_charge_time = self.atk_charge_time if self.atk_target.x > self.rect.x: self.flip = True self.move_dir_mult = 1 if self.atk_target.x > self.rect.x else -1 if not self.rect.colliderect(player_rect): return NONE if player_rect.bottom > self.rect.bottom and not is_dashing: return KILLED_PLAYER cropped_rect = self.rect.clip(player_rect) killed_player = cropped_rect.width < cropped_rect.height and not is_dashing if not killed_player: self.hp -= 1 # print("Remaining HP: " + str(self.hp)) self.elapsed_dmg_cooldown = self.dmg_cooldown trigger("Boss Damaged", 0) self.action = "DAMAGED" self.frame = 0 if self.hp == 0: trigger("Enemy Killed", (self.rect.x, self.rect.y)) trigger("Boss Killed", 0) else: return NONE return KILLED_PLAYER if killed_player else GET_KILLED
def on_gem_obtained(self, _): self.n_gems += 1 trigger("Num Gems Changed", self.n_gems)
def on_cherry_obtained(self, _): self.n_cherries += 1 trigger("Num Cherries Changed", self.n_cherries)
def on_player_collide(self, player_rect): trigger("Gem Obtained", 0) trigger("Rare Item Obtained", (self.rect.x, self.rect.y))
def on_player_collide(self, player_rect): trigger("Cherry Obtained", 0)
def on_player_collide(self, player_rect): self.action = 'ACTIVE' trigger("On Spring Collide", 0)
def on_player_collide(self, player_rect): trigger("Boss Zone Entered", 0)