def main_map(self, screen, player, assets): escape_call = Escape() sector_map = IconTree(self.images) sector_map.update() player_loc = sector_map.root alive = True win = None while alive and win is None: screen.blit(self.bg, (0, 0)) screen.blit(self.legend, (580, 20)) screen.blit(self.up, self.up_rect) screen.blit(self.down, self.down_rect) for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() break elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: escape_call.escape_menu(screen) break elif event.type == MOUSEBUTTONDOWN: position = pygame.mouse.get_pos() if self.up_rect.collidepoint( position) or self.down_rect.collidepoint(position): sector_map.scroll(screen, player_loc, self.bg, self.legend, self.up, self.down, self.up_rect, self.down_rect) for sp in sector_map.sprites(): if sp.is_child(player_loc) and sp.collide(position): player_loc = sp if sp.type == 'minion': alive = battle(screen, player, assets, escape_call) elif sp.type == 'boss': win = battle(screen, player, assets, escape_call, boss=True) elif sp.type == 'unknown': alive = events(screen, player, assets, escape_call) elif sp.type == 'repair': repair(screen, player, assets, escape_call) elif sp.type == 'shop': shop(screen, player, assets, escape_call) if alive: sector_map.draw(screen, player_loc) pygame.display.update() if player.current_health <= 0: break if not win or player.current_health <= 0: game_over(screen) if (win): game_win(screen)
def repair(screen, player, assets, escape_call): pygame.font.init() bg = pygame.transform.scale( pygame.image.load( os.path.join(ASSETS_PATH, 'Background', 'nebula', 'nebula07.png')), (SCREEN_WIDTH, SCREEN_HEIGHT)) large = pygame.font.Font(None, 64) repair_msg = large.render("Your ship has repaired 30%", False, BRIGHT_WHITE) repair_msg2 = large.render("hull integrity.", False, BRIGHT_WHITE) rep1_rect = repair_msg.get_rect(midbottom=(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2)) rep2_rect = repair_msg2.get_rect(midtop=rep1_rect.midbottom) small = pygame.font.Font(None, 22) cont_no = small.render("Continue", False, RED) cont_go = small.render("Continue", False, GREEN) rect = cont_no.get_rect(center=(SCREEN_WIDTH / 2, SCREEN_HEIGHT * (2 / 3))) player_rect = player.image.get_rect(center=(SCREEN_WIDTH / 2, SCREEN_HEIGHT / 6)) player.move(player_rect.x, player_rect.y) player.current_health += int(player.max_health * 0.30) if player.current_health > player.max_health: player.current_health = player.max_health screen.blit(bg, (0, 0)) player.draw(screen) screen.blit(repair_msg, rep1_rect) screen.blit(repair_msg2, rep2_rect) screen.blit(cont_no, rect) pygame.display.update() pygame.time.wait(1000) escape_call = Escape() while True: pygame.time.Clock().tick(40) pos = pygame.mouse.get_pos() if rect.collidepoint(pos): screen.blit(cont_go, rect) else: screen.blit(cont_no, rect) for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: escape_call.escape_menu(screen) break elif event.type == MOUSEBUTTONDOWN: if rect.collidepoint(pos): return pygame.display.update()