diff --git a/squirrelbattle/entities/friendly.py b/squirrelbattle/entities/friendly.py index 1c94ed8..94b1b8a 100644 --- a/squirrelbattle/entities/friendly.py +++ b/squirrelbattle/entities/friendly.py @@ -54,31 +54,32 @@ class Sunflower(FriendlyEntity): """ return [_("Flower power!!"), _("The sun is warm today")] + class Familiar(FightingEntity): """ A friendly familiar that helps the player defeat monsters. """ - def __init__(self, maxhealth: int = 25, + def __init__(self, maxhealth: int = 25, *args, **kwargs) -> None: - super().__init__(*args, **kwargs) + super().__init__(maxhealth=maxhealth, *args, **kwargs) self.target = None - def act(self, p: Player, m : Map) : + + def act(self, p: Player, m: Map) -> None: """ By default, the familiar tries to stay at distance at most 2 of the player and if a monster comes in range 3, it focuses on the monster and attacks it. """ - if self.target == None: + if self.target is None: self.target = p if self.target == p: for entity in m.entities: - if (self.y - entity.y) ** 2 + (self.x - entity.x) ** 2 <= 9 and \ + if (self.y - entity.y) ** 2 + (self.x - entity.x) ** 2 <= 9 and\ isinstance(entity, Monster): self.target = entity - entity.paths = dict() #Allows the paths to be calculated. + entity.paths = dict() # Allows the paths to be calculated. break - - + # Familiars move according to a Dijkstra algorithm # that targets their target. # If they can not move and are already close to their target, @@ -90,9 +91,9 @@ class Familiar(FightingEntity): if moved: break if self.distance_squared(self.target) <= 1 and \ - not isinstance(self.target, Player): + not isinstance(self.target, Player): self.map.logs.add_message(self.hit(self.target)) - if self.target.dead : + if self.target.dead: self.target.paths = None self.target = None break @@ -106,7 +107,8 @@ class Familiar(FightingEntity): if move(): break -class Trumpet(Familiar) : + +class Trumpet(Familiar): """ A class of familiars. """ diff --git a/squirrelbattle/entities/monsters.py b/squirrelbattle/entities/monsters.py index 87f643e..27c96a6 100644 --- a/squirrelbattle/entities/monsters.py +++ b/squirrelbattle/entities/monsters.py @@ -60,13 +60,15 @@ class Monster(FightingEntity): for move in moves: if move(): break - def move(self, y: int, x:int) -> None: + + def move(self, y: int, x: int) -> None: """ Overwrites the move function to recalculate paths. """ super().move(y, x) self.recalculate_paths() + class Tiger(Monster): """ A tiger monster. diff --git a/squirrelbattle/entities/player.py b/squirrelbattle/entities/player.py index 5f389cf..b5e146b 100644 --- a/squirrelbattle/entities/player.py +++ b/squirrelbattle/entities/player.py @@ -2,7 +2,6 @@ # SPDX-License-Identifier: GPL-3.0-or-later from random import randint -from typing import Dict, Tuple from ..interfaces import FightingEntity, InventoryHolder diff --git a/squirrelbattle/interfaces.py b/squirrelbattle/interfaces.py index 0fec4d0..75b49ca 100644 --- a/squirrelbattle/interfaces.py +++ b/squirrelbattle/interfaces.py @@ -63,9 +63,9 @@ class Map: """ Registers a new entity in the map. """ - if entity.is_familiar() : - self.entities.insert(1,entity) - else : + if entity.is_familiar(): + self.entities.insert(1, entity) + else: self.entities.append(entity) entity.map = self @@ -100,7 +100,8 @@ class Map: @staticmethod def load(filename: str) -> "Map": """ - Reads a file that contains the content of a map, and builds a Map object. + Reads a file that contains the content of a map, + and builds a Map object. """ with open(filename, "r") as f: file = f.read() @@ -162,7 +163,7 @@ class Map: for entity in self.entities: if entity.is_familiar(): entity.act(p, self) - else : + else: entity.act(self) def save_state(self) -> dict: @@ -307,7 +308,7 @@ class Entity: Uses Dijkstra algorithm to calculate best paths for other entities to go to this entity. If self.paths is None, does nothing. """ - if self.paths == None : + if self.paths is None: return distances = [] predecessors = [] @@ -352,7 +353,7 @@ class Entity: self.paths[(y, x)] = [p for d, p in sorted( [(distances[i][(y, x)], predecessors[i][(y, x)]) for i in range(len(distances)) if (y, x) in predecessors[i]])] - + def act(self, m: Map) -> None: """ Defines the action the entity will do at each tick. @@ -422,7 +423,7 @@ class Entity: from squirrelbattle.entities.monsters import Tiger, Hedgehog, \ Rabbit, TeddyBear from squirrelbattle.entities.friendly import Merchant, Sunflower, \ - Trumpet + Trumpet return [BodySnatchPotion, Bomb, Heart, Hedgehog, Rabbit, TeddyBear, Sunflower, Tiger, Merchant, Trumpet] diff --git a/squirrelbattle/settings.py b/squirrelbattle/settings.py index 3ff1be7..58e8cc1 100644 --- a/squirrelbattle/settings.py +++ b/squirrelbattle/settings.py @@ -13,7 +13,8 @@ from .translations import gettext as _ class Settings: """ This class stores the settings of the game. - Settings can be obtained by using for example settings.TEXTURE_PACK directly. + Settings can be obtained by using for example settings.TEXTURE_PACK + directly. The comment can be obtained by using settings.get_comment('TEXTURE_PACK'). We can set the setting by simply using settings.TEXTURE_PACK = 'new_key' """