1
0

spawn random items, and try to put on map, but i still need to investigate why items are not correctly rendered on map

This commit is contained in:
andrea
2025-11-14 23:15:14 +01:00
parent f408aee8f8
commit 054522eaf3
5 changed files with 46 additions and 25 deletions

View File

@@ -3,22 +3,39 @@ import random as _rand
import main as _main import main as _main
from utils import logs as _logs from utils import logs as _logs
from bot_libs import syms as _syms 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= [] 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 return items
def _debug_data(): def _debug_data():
players= _syms.COLORS_NAMES players= _syms.COLORS_NAMES
nelected_players= _rand.randint(6, 12)
elected_players= _rand.sample(players, nelected_players)
Arena= _main.init_arena() Arena= _main.init_arena()
for player in players: for player in elected_players:
Arena.add_player(player) Arena.add_player(player)
_logs.log_debug('Players: {elected_players}')
items= _get_random_items() items= _get_random_items(Arena)
for item in items: for item in items:
Arena.add_item(item) Arena.add_item(item)
_logs.log_info('Items: {items}')
return Arena return Arena
def _end_game_debug(alive_players, day): def _end_game_debug(alive_players, day):
@@ -97,7 +114,7 @@ def init_debug_simulation():
_logs.log_debug('#################') _logs.log_debug('#################')
_logs.log_debug('#################') _logs.log_debug('#################')
_logs.log_debug('#################') _logs.log_debug('#################')
_time.sleep(0.3) _time.sleep(0.7)
def init_debug_attack_loop(): def init_debug_attack_loop():
Arena= _debug_data() Arena= _debug_data()

View File

@@ -116,10 +116,10 @@ class BrSimArena():
self.players.append(player) self.players.append(player)
self.Map.add_player_to_map(player) self.Map.add_player_to_map(player)
def add_item(self, itype): def add_item(self, item_id):
weapon= _items.BrSimItem(itype) Item= _items.BrSimItem(item_id)
self.items.append(weapon) self.items.append(Item)
self.Map.add_item_to_map(item) self.Map.add_item_to_map(Item)
def get_players(self): def get_players(self):
return self.players return self.players

View File

@@ -58,14 +58,9 @@ class BrSimMap():
for player in self.players: for player in self.players:
p_coord_x, p_coord_y= player.get_coordinates() p_coord_x, p_coord_y= player.get_coordinates()
self.game_map[p_coord_y][p_coord_x]= player 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: for item in self.items:
i_coord_x, i_coord_y= item.get_coordinates() i_coord_x, i_coord_y= item.get_coordinates()
self.game_map[p_coord_y][p_coord_x]= item 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): 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 #x= _random.randint(1, self.world_width -2) # from 1 to width-2 because 1 cell is occupied by the mountain

View File

@@ -1,28 +1,35 @@
import random as _random import random as _random
from entities import resource as _resource from entities import resource as _resource
from entities.items import syms as _isyms
class BrSimItem(_resource.BrSimResource): 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_id):
def __init__(self, item): self.item= _isyms.ITEMS[item_id]
self.coord_x= 0
self.coord_y= 0
self.item= item
def is_item(self): def is_item(self):
return True return True
def get_name(self): def get_data(self):
return self.name return self.item
def get_item_type(self): def get_name(self):
return self.item_type idata= self.get_data()
return idata['name']
def get_weight(self): def get_weight(self):
return self.weight idata= self.get_data()
return idata['weight']
def is_weapon(self): def is_weapon(self):
return False idata= self.get_data()
return idata['is_weapon']
def is_cure(self): 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()

View File

@@ -35,3 +35,5 @@ ITEMS= {
'range': FAR_RANGE, 'range': FAR_RANGE,
}, },
} }
ITEMS_LIST= list(ITEMS.keys())