From db86f3dd0662e1833e44a15faf777692362f90bad77d0f47829522cb7b04bb86 Mon Sep 17 00:00:00 2001 From: green Date: Thu, 24 Jul 2025 16:08:06 +0200 Subject: [PATCH] arena as class --- entities/arena.py | 64 ++++++++++++++++++++++++++++++++++++++ main.py | 78 +++++++---------------------------------------- 2 files changed, 75 insertions(+), 67 deletions(-) create mode 100644 entities/arena.py diff --git a/entities/arena.py b/entities/arena.py new file mode 100644 index 0000000..97466d9 --- /dev/null +++ b/entities/arena.py @@ -0,0 +1,64 @@ +from entities import player as _player +from entities import weapons as _weapons +from entities import weapon_syms as _wsyms + +class BrSimArena(): + + # players = [{'name': name, 'inventory': default_inventory, other_stats}] + # weapons = [{WEAPON.KNIFE: quantity}, etc...] # this is the whole quantity of the items available on the world + + def __init__(self, players, weapons): + self.day= 1 + self.players= [_player.BrSimPlayer(p['name'], p.get('inventory')) for p in players] + self.weapons= [] + for weapon in weapons: + for wtype, quantity in weapon.items(): + for i in range(quantity): self.weapons.append(_weapons.BrSimWeapon(wtype)) + + def next_day(self): + self.day+= 1 + print(f'Giorno: {self.day}') + print(f'Giocatori vivi: {self.get_alive_players()}') + death_players= self.get_death_players() + if (death_players): + print(f'Giocatori morti: {death_players}') + + def get_alive_players(self): + res= [] + for p in self.players: + if not p.is_alive(): continue + res.append(p) + return res + + def get_death_players(self): + res= [] + for p in self.players: + if p.is_alive(): continue + res.append(p) + return res + + def do_random_event(self): + #XXX random player does random action according to his inventory health, wounds, available weapons on the world, etc... + pass + + def supporter_donation(self): + #XXX supporter donate a random item or weapon to a random player + #TODO maybe in future a player can have charism stats that can influence the chance to get a donation + pass + + def add_player(self, name, inventory= None): + player= _player.BrSimPlayer(name, inventory) + self.players.append(player) + + def get_players(self): + res= [] + for p in self.players: + res.append(p.get_data()) + return res + + def get_weapons(self): + res= [] + for w in self.weapons: + #XXX implement me + res.append(w) + return res diff --git a/main.py b/main.py index 2a2018f..8d8cb99 100644 --- a/main.py +++ b/main.py @@ -1,82 +1,26 @@ -from entities import player as _player -from entities import weapons as _weapons -from entities import weapon_syms as _wsyms - -class BrSimArena(): - - # players = [{'name': name, 'inventory': default_inventory, other_stats}] - # weapons = [{WEAPON.KNIFE: quantity}, etc...] # this is the whole quantity of the items available on the world - - def __init__(self, players, weapons): - self.day= 1 - self.players= [_player.BrSimPlayer(p['name'], p.get('inventory')) for p in players] - self.weapons= [] - for weapon in weapons: - for wtype, quantity in weapon.items(): - for i in range(quantity): self.weapons.append(_weapons.BrSimWeapon(wtype)) - - def next_day(self): - self.day+= 1 - print(f'Giorno: {self.day}') - print(f'Giocatori vivi: {self.get_alive_players()}') - death_players= self.get_death_players() - if (death_players): - print(f'Giocatori morti: {death_players}') - - def get_alive_players(self): - res= [] - for p in self.players: - if not p.is_alive(): continue - res.append(p) - return res - - def get_death_players(self): - res= [] - for p in self.players: - if p.is_alive(): continue - res.append(p) - return res - - def do_random_event(self): - #XXX random player does random action according to his inventory health, wounds, available weapons on the world, etc... - pass - - def supporter_donation(self): - #XXX supporter donate a random item or weapon to a random player - #TODO maybe in future a player can have charism stats that can influence the chance to get a donation - pass - - def add_player(self, name, inventory= None): - player= _player.BrSimPlayer(name, inventory) - self.players.append(player) - - def get_players(self): - res= [] - for p in self.players: - res.append(p.get_data()) - return res - - def get_weapons(self): - res= [] - for w in self.weapons: - #XXX implement me - res.append(w) - return res +import random as _random +from entities import arena as _arena def init_arena(): players= [{'name': 'Crystal'}, {'name': 'Andrea'}] w= _wsyms.KNIFE #weapons= [{_wsyms.WEAPONS[w]['name' ]: 1}] weapons= [{w: 1}] - return BrSimArena(players, weapons) + return _arena.BrSimArena(players, weapons) -def run_event(Arena): +def run_events(Arena): + #A event for each player: pass def local_debug(): Arena= init_arena() print(f'Players: {Arena.get_players()}') print(f'Weapons: {Arena.get_weapons()}') - run_event(Arena) + while (len(Arena.get_alive_players()) > 1) + #Start a day + run_events(Arena) + #At 23:59: + Arena.next_day() + #End of day