diff --git a/debug.py b/debug.py index bb10e2d..27df5ca 100644 --- a/debug.py +++ b/debug.py @@ -3,22 +3,39 @@ import random as _rand import main as _main from utils import logs as _logs from bot_libs import syms as _syms +from entities.items import syms as _isyms -def _get_random_items(): +def _extract_random_number_of_items(Arena): + players= Arena.get_players() + nplayers= len(players) + min_extraction= max(nplayers - 5, 3) + max_extraction= min(nplayers - 1, 8) + nitems= _rand.randint(min_extraction, max_extraction) + return nitems + +def _get_random_items(Arena): items= [] + nitems= _extract_random_number_of_items(Arena) + for n in range(nitems): + itype= _rand.sample(_isyms.ITEMS_LIST, 1)[0] + items.append(itype) return items def _debug_data(): players= _syms.COLORS_NAMES + nelected_players= _rand.randint(6, 12) + elected_players= _rand.sample(players, nelected_players) Arena= _main.init_arena() - for player in players: + for player in elected_players: Arena.add_player(player) + _logs.log_debug('Players: {elected_players}') - items= _get_random_items() + items= _get_random_items(Arena) for item in items: Arena.add_item(item) + _logs.log_info('Items: {items}') return Arena def _end_game_debug(alive_players, day): @@ -97,7 +114,7 @@ def init_debug_simulation(): _logs.log_debug('#################') _logs.log_debug('#################') _logs.log_debug('#################') - _time.sleep(0.3) + _time.sleep(0.7) def init_debug_attack_loop(): Arena= _debug_data() diff --git a/entities/arena.py b/entities/arena.py index cb63d90..da6a516 100644 --- a/entities/arena.py +++ b/entities/arena.py @@ -116,10 +116,10 @@ class BrSimArena(): self.players.append(player) self.Map.add_player_to_map(player) - def add_item(self, itype): - weapon= _items.BrSimItem(itype) - self.items.append(weapon) - self.Map.add_item_to_map(item) + def add_item(self, item_id): + Item= _items.BrSimItem(item_id) + self.items.append(Item) + self.Map.add_item_to_map(Item) def get_players(self): return self.players diff --git a/entities/gamemap.py b/entities/gamemap.py index 79679f0..3a82710 100644 --- a/entities/gamemap.py +++ b/entities/gamemap.py @@ -58,14 +58,9 @@ class BrSimMap(): for player in self.players: p_coord_x, p_coord_y= player.get_coordinates() self.game_map[p_coord_y][p_coord_x]= player - #if not player.is_alive(): self.game_map[p_coord_y][p_coord_x]= self.dead_player_sym - #elif player.player_gender_is_male(): self.game_map[p_coord_y][p_coord_x]= self.player_male_sym - #elif player.player_gender_is_female(): self.game_map[p_coord_y][p_coord_x]= self.player_female_sym - #else: self.game_map[p_coord_y][p_coord_x]= self.player_nonbinary_sym for item in self.items: i_coord_x, i_coord_y= item.get_coordinates() self.game_map[p_coord_y][p_coord_x]= item - #self.game_map[i_coord_y][i_coord_x]= self.item_sym def _put_resource_on_map(self, target): #x= _random.randint(1, self.world_width -2) # from 1 to width-2 because 1 cell is occupied by the mountain diff --git a/entities/items/item.py b/entities/items/item.py index c4e2326..f191cd4 100644 --- a/entities/items/item.py +++ b/entities/items/item.py @@ -1,28 +1,35 @@ import random as _random from entities import resource as _resource +from entities.items import syms as _isyms class BrSimItem(_resource.BrSimResource): + #XXX i don't know yet if we need to call this clas + # or we need to have subclasses that inherit this one + # for example class Weapon and class Medikit (or something else) + # this decision would change everything from Arena init - # test - def __init__(self, item): - self.coord_x= 0 - self.coord_y= 0 - self.item= item + def __init__(self, item_id): + self.item= _isyms.ITEMS[item_id] def is_item(self): return True - def get_name(self): - return self.name + def get_data(self): + return self.item - def get_item_type(self): - return self.item_type + def get_name(self): + idata= self.get_data() + return idata['name'] def get_weight(self): - return self.weight + idata= self.get_data() + return idata['weight'] def is_weapon(self): - return False + idata= self.get_data() + return idata['is_weapon'] def is_cure(self): - return False + #XXX not sure about it + # maybe we could have more item type, like foods, drink, poison... + return not self.is_weapon() diff --git a/entities/items/syms.py b/entities/items/syms.py index 82548e6..44dd524 100644 --- a/entities/items/syms.py +++ b/entities/items/syms.py @@ -35,3 +35,5 @@ ITEMS= { 'range': FAR_RANGE, }, } + +ITEMS_LIST= list(ITEMS.keys())