From 2b5d82db571e72d3f5498ebba6c345e44181eb69 Mon Sep 17 00:00:00 2001 From: Yohann D'ANELLO Date: Wed, 11 Nov 2020 16:23:27 +0100 Subject: [PATCH] Spawn also items --- dungeonbattle/display/texturepack.py | 4 ++++ dungeonbattle/entities/items.py | 4 ++++ dungeonbattle/entities/player.py | 3 ++- dungeonbattle/game.py | 2 +- dungeonbattle/interfaces.py | 15 ++++++++++----- 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/dungeonbattle/display/texturepack.py b/dungeonbattle/display/texturepack.py index 57d8bf6..536bfa1 100644 --- a/dungeonbattle/display/texturepack.py +++ b/dungeonbattle/display/texturepack.py @@ -44,6 +44,8 @@ TexturePack.ASCII_PACK = TexturePack( FLOOR='.', PLAYER='@', HEDGEHOG='*', + HEART='❤', + BOMB='o', ) TexturePack.SQUIRREL_PACK = TexturePack( @@ -58,4 +60,6 @@ TexturePack.SQUIRREL_PACK = TexturePack( FLOOR='██', PLAYER='🐿 ️', HEDGEHOG='🦔', + HEART='💜', + BOMB='💣', ) diff --git a/dungeonbattle/entities/items.py b/dungeonbattle/entities/items.py index 88c6127..676f517 100644 --- a/dungeonbattle/entities/items.py +++ b/dungeonbattle/entities/items.py @@ -16,6 +16,10 @@ class Item(Entity): self.held = True +class Heart(Item): + name = "heart" + + class Bomb(Item): name = "bomb" damage: int = 5 diff --git a/dungeonbattle/entities/player.py b/dungeonbattle/entities/player.py index c656130..2ab3a43 100644 --- a/dungeonbattle/entities/player.py +++ b/dungeonbattle/entities/player.py @@ -36,7 +36,8 @@ class Player(FightingEntity): self.max_xp = self.level * 10 self.health = self.maxhealth # TODO Remove it, that's only fun - self.map.spawn_random_entities(randint(self.level, self.level * 5)) + self.map.spawn_random_entities(randint(3 * self.level, + 10 * self.level)) def add_xp(self, xp: int) -> None: """ diff --git a/dungeonbattle/game.py b/dungeonbattle/game.py index a2ea93a..3607c3a 100644 --- a/dungeonbattle/game.py +++ b/dungeonbattle/game.py @@ -52,7 +52,7 @@ class Game: self.player = Player() self.map.add_entity(self.player) self.player.move(1, 14) - self.map.spawn_random_entities(randint(1, 5)) + self.map.spawn_random_entities(randint(3, 10)) @staticmethod def load_game(filename: str) -> None: diff --git a/dungeonbattle/interfaces.py b/dungeonbattle/interfaces.py index a1ab13c..20f8f3d 100644 --- a/dungeonbattle/interfaces.py +++ b/dungeonbattle/interfaces.py @@ -1,7 +1,7 @@ #!/usr/bin/env python from enum import Enum, auto from math import sqrt -from random import randint +from random import choice, randint from typing import List from dungeonbattle.display.texturepack import TexturePack @@ -97,10 +97,9 @@ class Map: tile = self.tiles[y][x] if tile.can_walk(): break - from dungeonbattle.entities.monsters import Hedgehog - hedgehog = Hedgehog() - hedgehog.move(y, x) - self.add_entity(hedgehog) + entity = choice(Entity.get_all_entity_classes())() + entity.move(y, x) + self.add_entity(entity) def tick(self) -> None: """ @@ -193,6 +192,12 @@ class Entity: """ return sqrt(self.distance_squared(other)) + @staticmethod + def get_all_entity_classes(): + from dungeonbattle.entities.items import Heart, Bomb + from dungeonbattle.entities.monsters import Hedgehog + return [Hedgehog, Heart, Bomb] + class FightingEntity(Entity): maxhealth: int