diff --git a/dungeonbattle/display/mapdisplay.py b/dungeonbattle/display/mapdisplay.py index 0a07ec0..e71ee2e 100644 --- a/dungeonbattle/display/mapdisplay.py +++ b/dungeonbattle/display/mapdisplay.py @@ -17,7 +17,7 @@ class MapDisplay(Display): def update_pad(self) -> None: self.pad.addstr(0, 0, self.map.draw_string(self.pack)) for e in self.map.entities: - self.pad.addstr(e.y, e.x, self.pack.PLAYER) + self.pad.addstr(e.y, e.x, self.pack[e.name.upper()]) def display(self) -> None: y, x = self.map.currenty, self.map.currentx diff --git a/dungeonbattle/display/texturepack.py b/dungeonbattle/display/texturepack.py index 6929a9c..9cc8ced 100644 --- a/dungeonbattle/display/texturepack.py +++ b/dungeonbattle/display/texturepack.py @@ -15,6 +15,9 @@ class TexturePack: self.__dict__.update(**kwargs) TexturePack._packs[name] = self + def __getitem__(self, item): + return self.__dict__[item] + @classmethod def get_pack(cls, name: str) -> "TexturePack": return cls._packs[name.lower()] @@ -26,6 +29,7 @@ TexturePack.ASCII_PACK = TexturePack( WALL='#', FLOOR='.', PLAYER='@', + HEDGEHOG='*', ) TexturePack.SQUIRREL_PACK = TexturePack( @@ -34,4 +38,5 @@ TexturePack.SQUIRREL_PACK = TexturePack( WALL='█', FLOOR='.', PLAYER='🐿️', + HEDGEHOG='🦔', ) diff --git a/dungeonbattle/entities/items.py b/dungeonbattle/entities/items.py index 3edec91..88c6127 100644 --- a/dungeonbattle/entities/items.py +++ b/dungeonbattle/entities/items.py @@ -17,6 +17,7 @@ class Item(Entity): class Bomb(Item): + name = "bomb" damage: int = 5 exploding: bool diff --git a/dungeonbattle/entities/monsters.py b/dungeonbattle/entities/monsters.py index 59db0e7..2246e50 100644 --- a/dungeonbattle/entities/monsters.py +++ b/dungeonbattle/entities/monsters.py @@ -6,6 +6,7 @@ class Monster(FightingEntity): pass -class Squirrel(Monster): +class Hedgehog(Monster): + name = "hedgehog" maxhealth = 10 strength = 3 diff --git a/dungeonbattle/entities/player.py b/dungeonbattle/entities/player.py index 9f01d0d..bef881c 100644 --- a/dungeonbattle/entities/player.py +++ b/dungeonbattle/entities/player.py @@ -2,6 +2,7 @@ from ..interfaces import FightingEntity class Player(FightingEntity): + name = "player" maxhealth: int = 20 strength: int = 5 intelligence: int = 1 diff --git a/dungeonbattle/interfaces.py b/dungeonbattle/interfaces.py index a0c39dc..82e9af2 100644 --- a/dungeonbattle/interfaces.py +++ b/dungeonbattle/interfaces.py @@ -14,6 +14,7 @@ class Map: width: int height: int tiles: List[List["Tile"]] + entities: List["Entity"] # coordinates of the point that should be # on the topleft corner of the screen currentx: int @@ -73,7 +74,7 @@ class Map: def spawn_random_entities(self, count: int) -> None: """ - Put randomly {count} squirrels on the map, where it is available. + Put randomly {count} hedgehogs on the map, where it is available. """ for _ in range(count): y, x = 0, 0 @@ -82,10 +83,10 @@ class Map: tile = self.tiles[y][x] if tile.can_walk(): break - from dungeonbattle.entities.monsters import Squirrel - squirrel = Squirrel() - squirrel.move(y, x) - self.add_entity(squirrel) + from dungeonbattle.entities.monsters import Hedgehog + hedgehog = Hedgehog() + hedgehog.move(y, x) + self.add_entity(hedgehog) class Tile(Enum): diff --git a/dungeonbattle/tests/entities_test.py b/dungeonbattle/tests/entities_test.py index 00ea33b..1d3a04b 100644 --- a/dungeonbattle/tests/entities_test.py +++ b/dungeonbattle/tests/entities_test.py @@ -1,7 +1,7 @@ import unittest from dungeonbattle.entities.items import Bomb, Item -from dungeonbattle.entities.monsters import Squirrel +from dungeonbattle.entities.monsters import Hedgehog from dungeonbattle.entities.player import Player from dungeonbattle.interfaces import Entity, Map @@ -27,7 +27,7 @@ class TestEntities(unittest.TestCase): """ Test some random stuff with fighting entities. """ - entity = Squirrel() + entity = Hedgehog() self.assertIsNone(entity.act(self.map)) self.assertEqual(entity.maxhealth, 10) self.assertEqual(entity.maxhealth, entity.health) @@ -58,18 +58,18 @@ class TestEntities(unittest.TestCase): Test some random stuff with bombs. """ item = Bomb() - squirrel = Squirrel() + hedgehog = Hedgehog() self.map.add_entity(item) - self.map.add_entity(squirrel) - squirrel.health = 2 - squirrel.move(41, 42) + self.map.add_entity(hedgehog) + hedgehog.health = 2 + hedgehog.move(41, 42) item.act(self.map) - self.assertFalse(squirrel.dead) + self.assertFalse(hedgehog.dead) item.drop(42, 42) self.assertEqual(item.y, 42) self.assertEqual(item.x, 42) item.act(self.map) - self.assertTrue(squirrel.dead) + self.assertTrue(hedgehog.dead) def test_players(self) -> None: """ diff --git a/dungeonbattle/texturepack.py b/dungeonbattle/texturepack.py deleted file mode 100644 index e69de29..0000000