import time as _time import random as _rand import main as _main from utils import logs as _logs from bot_libs import syms as _syms def _debug_data(): players= _syms.COLORS_NAMES weapons= [] Arena= _main.init_arena() for player in players: Arena.add_player(player) return Arena def _end_game_debug(alive_players, day): last_player= alive_players[0] msg= f'{last_player.get_name()} sopravvive e vince dopo {day} lunghi Giorni, conquistando l\'amore eterno di Guarino' _logs.log_debug(msg) return msg def _random_action(Arena, Player_one): _RANDOM_ACTIONS= { 1: 'attack', 2: 'move', } Map= Arena.get_map() avail_actions= Map.get_player_available_actions(Player_one) _logs.log_debug(f'{Player_one.get_name()}:{Player_one.get_coordinates()}, avail_actions: {avail_actions}') msg= '' if 1 in avail_actions: # XXX maybe in future this action is available only if you are near to another player # so Player_two is no more random, but will be a random near player preys= avail_actions[1] Player_two= _rand.sample(preys, 1)[0] while Player_one.get_id() == Player_two.get_id() and not Player_two.is_alive(): Player_two= _rand.sample(preys, 1)[0] _dmg, msg= Player_one.attack(Player_two) elif 2 in avail_actions: Map= Arena.get_map() available_movements= Map.get_player_available_directions(Player_one) _logs.log_debug(f'{Player_one.get_name()}:{Player_one.get_coordinates()}, avail_movements: {available_movements}') if not available_movements: # XXX probably should skip this action and look for another action return f'{Player_one.get_name()} Pensa a Guarino tutto il giorno' _rand.shuffle(available_movements) x, y, direction= available_movements[0] Player_one.move(x, y) Map.init_map_matrix() _logs.log_debug(Map.get_renderized_map()) msg= f'{Player_one.get_name()} Si muove verso »»» {direction}' return msg def play_one_day_debug(Arena): if not Arena.get_players(): return _logs.log_debug(f'Giorno #{Arena.day}') alive_players= Arena.get_alive_players() if len(alive_players) == 1: day= Arena.day return _end_game_debug(alive_players, day) daily_events= [] _rand.shuffle(alive_players) for Player_one in alive_players: if not Player_one.is_alive(): continue # he could be dead during this day cycle msg= _random_action(Arena, Player_one) #p_two= _rand.sample(Arena.get_alive_players(), 1)[0] #while Player_one.get_id() == p_two.get_id(): #p_two= _rand.sample(Arena.get_alive_players(), 1)[0] #_dmg, msg= Player_one.attack(p_two) daily_events.append(msg) Arena.next_day() res= '\n'.join(daily_events) return res #p_one, p_two= _rand.sample(alive_players, 2) #_dmg, msg= p_one.attack(p_two) #return msg def init_debug_simulation(): Arena= _debug_data() while (len(Arena.get_alive_players()) > 1): events= play_one_day_debug(Arena) _logs.log_debug('#################') _logs.log_debug('#################') _logs.log_debug('#################') _logs.log_debug(events) _logs.log_debug('#################') _logs.log_debug('#################') _logs.log_debug('#################') _time.sleep(0.3) def init_debug_loop(): Arena= _debug_data() while (len(Arena.get_alive_players()) > 1): alive_players= Arena.get_alive_players() p_one, p_two= _rand.sample(alive_players, 2) p_one.attack(p_two) #Start a day #At 23:59: Arena.next_day() _time.sleep(0.3) #End of day last_player= Arena.get_alive_players()[0] _logs.log_debug(f'{last_player.get_name()} sopravvive e vince dopo {Arena.day} lunghi Giorni, conquistando l\'amore eterno di Guarino') def debug_random_map(): from entities import map as _map; from entities import player; M= _map.BrSimMap(players= [player.BrSimPlayer(i) for i in range(20)]); res= M.get_renderized_map() _logs.log_debug(res) if __name__ == '__main__': init_debug()