From 887a190f113c143dc9bcc813d9380c4ab45c49d8 Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Wed, 6 Jan 2021 17:00:43 +0100 Subject: [PATCH] Less complexity on the handle key function --- squirrelbattle/game.py | 84 ++++++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 39 deletions(-) diff --git a/squirrelbattle/game.py b/squirrelbattle/game.py index f522196..bb9ee86 100644 --- a/squirrelbattle/game.py +++ b/squirrelbattle/game.py @@ -155,47 +155,53 @@ class Game: elif key == KeyValues.WAIT: self.map.tick() elif key == KeyValues.LADDER: - # On a ladder, we switch level - y, x = self.player.y, self.player.x - if not self.map.tiles[y][x].is_ladder(): - return + self.handle_ladder() - # We move up on the ladder of the beginning, - # down at the end of the stage - move_down = y != self.map.start_y and x != self.map.start_x - old_map = self.map - self.map_index += 1 if move_down else -1 - if self.map_index == -1: - self.map_index = 0 - return - while self.map_index >= len(self.maps): - # TODO: generate a new map - self.maps.append(Map.load(ResourceManager.get_asset_path( - "example_map_2.txt"))) - new_map = self.map - new_map.floor = self.map_index - old_map.remove_entity(self.player) - new_map.add_entity(self.player) - if move_down: - self.player.move(self.map.start_y, self.map.start_x) - self.logs.add_message( - _("The player climbs down to the floor {floor}.") - .format(floor=-self.map_index)) - else: - # Find the ladder of the end of the game - ladder_y, ladder_x = -1, -1 - for y in range(self.map.height): - for x in range(self.map.width): - if (y, x) != (self.map.start_y, self.map.start_x) \ - and self.map.tiles[y][x].is_ladder(): - ladder_y, ladder_x = y, x - break - self.player.move(ladder_y, ladder_x) - self.logs.add_message( - _("The player climbs up the floor {floor}.") - .format(floor=-self.map_index)) + def handle_ladder(self) -> None: + """ + The player pressed the ladder key to switch map + """ + # On a ladder, we switch level + y, x = self.player.y, self.player.x + if not self.map.tiles[y][x].is_ladder(): + return - self.display_actions(DisplayActions.UPDATE) + # We move up on the ladder of the beginning, + # down at the end of the stage + move_down = y != self.map.start_y and x != self.map.start_x + old_map = self.map + self.map_index += 1 if move_down else -1 + if self.map_index == -1: + self.map_index = 0 + return + while self.map_index >= len(self.maps): + # TODO: generate a new map + self.maps.append(Map.load(ResourceManager.get_asset_path( + "example_map_2.txt"))) + new_map = self.map + new_map.floor = self.map_index + old_map.remove_entity(self.player) + new_map.add_entity(self.player) + if move_down: + self.player.move(self.map.start_y, self.map.start_x) + self.logs.add_message( + _("The player climbs down to the floor {floor}.") + .format(floor=-self.map_index)) + else: + # Find the ladder of the end of the game + ladder_y, ladder_x = -1, -1 + for y in range(self.map.height): + for x in range(self.map.width): + if (y, x) != (self.map.start_y, self.map.start_x) \ + and self.map.tiles[y][x].is_ladder(): + ladder_y, ladder_x = y, x + break + self.player.move(ladder_y, ladder_x) + self.logs.add_message( + _("The player climbs up the floor {floor}.") + .format(floor=-self.map_index)) + + self.display_actions(DisplayActions.UPDATE) def handle_friendly_entity_chat(self, key: KeyValues) -> None: """