diff --git a/roguebasin/object.py b/roguebasin/object.py index b2e41d6..0568aec 100644 --- a/roguebasin/object.py +++ b/roguebasin/object.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python3 # Eryn Wells from typing import TYPE_CHECKING, Optional, Tuple, Type @@ -13,7 +12,21 @@ if TYPE_CHECKING: from .ai import AI class Entity: - '''A single-tile drawable entity with a symbol and position.''' + '''A single-tile drawable entity with a symbol and position. + + Attributes + ---------- + position : Point + The Entity's location on the map + foreground : Tuple[int, int, int] + The foreground color used to render this Entity + background : Tuple[int, int, int], optional + The background color used to render this Entity + symbol : str + A single character string that represents this character on the map + ai : Type[AI], optional + If an entity can act on its own behalf, an instance of an AI class + ''' def __init__(self, symbol: str, *, position: Optional[Point] = None, @@ -27,19 +40,26 @@ class Entity: self.ai = ai def print_to_console(self, console: tcod.Console) -> None: + '''Render this Entity to the console''' console.print(x=self.position.x, y=self.position.y, string=self.symbol, fg=self.foreground, bg=self.background) - def __str__(self): + def __str__(self) -> str: return f'{self.symbol}[{self.position}]' - def __repr__(self): + def __repr__(self) -> str: return f'{self.__class__.__name__}({self.symbol}, position={self.position}, fg={self.foreground}, bg={self.background})' class Hero(Entity): + '''The hero, the player character''' + def __init__(self, position: Point): super().__init__('@', position=position, fg=tuple(tcod.white)) self.fighter = Fighter(maximum_hit_points=30, attack_power=5, defense=2) + def __str__(self) -> str: + return f'{self.symbol}[{self.position}][{self.fighter.hit_points}/{self.fighter.maximum_hit_points}]' + + class Monster(Entity): '''An instance of a Species.'''