From 65688b9100f0ffc81d35c9976636665d1e4f0454e1685bb2ac76a51aab743560 Mon Sep 17 00:00:00 2001 From: andrea Date: Sat, 26 Jul 2025 15:53:26 +0200 Subject: [PATCH] add random health, random damage and show full player stats with emoji --- bot.py | 2 +- bot_libs/player_handling.py | 6 +++--- bot_libs/simulation.py | 6 +++--- entities/player.py | 42 ++++++++++++++++++++++++------------- 4 files changed, 35 insertions(+), 21 deletions(-) diff --git a/bot.py b/bot.py index 8475056..501acea 100644 --- a/bot.py +++ b/bot.py @@ -77,7 +77,7 @@ async def bot_commands(update, context): await _bot_player.add_random_players(update, context, colors_names= True) Arena= context.application.bot_data['arena'] - players= [p.get_name() for p in Arena.get_players()] + players= [p.get_name_and_stats() for p in Arena.get_players()] players_str= '\n'.join(players) return await update.message.reply_text(f'Ecco i {len(players)} giocatori presenti nel mondo do gioco: \n{players_str}') diff --git a/bot_libs/player_handling.py b/bot_libs/player_handling.py index b4e2bc2..21e75fa 100644 --- a/bot_libs/player_handling.py +++ b/bot_libs/player_handling.py @@ -21,21 +21,21 @@ async def add_random_players(update, context, colors_names= False): async def get_players(update, context): Arena= context.application.bot_data['arena'] - players= [p.get_name() for p in Arena.get_players()] + players= [p.get_name_and_stats() for p in Arena.get_players()] players_str= '\n'.join(players) print(f'get_players: {players_str}') await update.message.reply_text(f'Ecco i giocatori presenti nel mondo do gioco: \n{players_str}') async def get_alive_players(update, context): Arena= context.application.bot_data['arena'] - alive= [a.get_name() for a in Arena.get_alive_players()] + alive= [a.get_name_and_stats() for a in Arena.get_alive_players()] alive_str= '\n'.join(alive) print(f'get_alive_players: {alive_str}') await update.message.reply_text(f'Ecco i giocatori ancora vivi: \n{alive_str}') async def get_death_players(update, context): Arena= context.application.bot_data['arena'] - death= [d.get_name() for d in Arena.get_death_players()] + death= [d.get_name_and_stats() for d in Arena.get_death_players()] death_str= '\n'.join(death) print(f'get_death_players: {death_str}') await update.message.reply_text(f'Ecco i giocatori morti x.x: \n{death_str}') diff --git a/bot_libs/simulation.py b/bot_libs/simulation.py index 513b10e..867bc8c 100644 --- a/bot_libs/simulation.py +++ b/bot_libs/simulation.py @@ -8,11 +8,11 @@ def get_winner(Arena): except: pass day= Arena.day if winner.player_gender_is_male(): - msg= f'{winner.get_name()} Vince la cruenta battaglia uccidendo {winner.get_kills()} giocatori, e vive felice e contento con Guarino' + msg= f'{winner.get_name_and_stats()} Vince la cruenta battaglia uccidendo {winner.get_kills()} giocatori, e vive felice e contento con Guarino' elif winner.player_gender_is_female(): - msg= f'{winner.get_name()} Vince la cruenta battaglia uccidendo {winner.get_kills()} giocatori, e vive felice e contenta con Guarino' + msg= f'{winner.get_name_and_stats()} Vince la cruenta battaglia uccidendo {winner.get_kills()} giocatori, e vive felice e contenta con Guarino' else: - msg= f'{winner.get_name()} Vince la cruenta battaglia uccidendo {winner.get_kills()} giocatori, e vive felice e content# con Guarino' + msg= f'{winner.get_name_and_stats()} Vince la cruenta battaglia uccidendo {winner.get_kills()} giocatori, e vive felice e content# con Guarino' return msg async def simulate_day(context, chat_id): diff --git a/entities/player.py b/entities/player.py index 573dc09..84f9beb 100644 --- a/entities/player.py +++ b/entities/player.py @@ -6,12 +6,14 @@ class BrSimPlayer(): def __init__(self, name, inventory= None): self.id= str(_uuid.uuid4()) self.name= name - self.health= 1 + self.stats= '' + self.health= _random.randint(1,3) self.inventory= inventory or [] - self.damage= 1 # this is the punch damage amount + self.damage= _random.randint(1,2) # this is the punch damage amount self.max_weight= 5 # this is the max inventory weight self.agility= _random.randint(5,30) # chance to avoid an hit self.kills= 0 # track the number of kills + self.accused_damage= 0 self.survived_days= 0 # track the number of the survived days self.equipped_weapon= None self.gender= _random.sample(['m', 'f', '-'], 1)[0] # for now get a random gender @@ -19,6 +21,16 @@ class BrSimPlayer(): ### control methods + def get_name_and_stats(self): + health= '♥️' * self.health + strength= '⚔️' * self.damage + agility= f'🚀{self.agility}' + if self.player_gender_is_male(): gender= '♂' + elif self.player_gender_is_female(): gender= '♀' + else: gender= '⚩' + name= f'{self.name} {gender} {health} {strength} {agility}' + return name + def get_id(self): return self.id @@ -66,6 +78,7 @@ class BrSimPlayer(): return { 'id': self.get_id(), 'name': self.get_name(), + 'name_stats': self.get_name_and_stats(), 'gender': self.get_gender(), 'inventory': self.get_inventory(), 'inventory_weight': self.get_inventory_weight(), @@ -102,41 +115,42 @@ class BrSimPlayer(): return False def accuses_damage(self, damage): - self.health -= damage + self.health-= damage + self.accused_damage+= damage if self.health > 0: return self.get_health() - self.health = 0 + self.health= 0 if self.player_gender_is_male(): - print(f'[{self.get_name()}]: Guarino, perdonami se sono morto x.x') + print(f'[{self.get_name_and_stats()}]: Guarino, perdonami se sono morto x.x') elif self.player_gender_is_female(): - print(f'[{self.get_name()}]: Guarino, perdonami se sono morta x.x') + print(f'[{self.get_name_and_stats()}]: Guarino, perdonami se sono morta x.x') else: - print(f'[{self.get_name()}]: Guarino, perdonami se sono mort* x.x') + print(f'[{self.get_name_and_stats()}]: Guarino, perdonami se sono mort* x.x') return damage def attack(self, target): self._equip_weapon() if target.dodge(): if target.player_gender_is_male(): - msg= f'Ehhhh voleviiii!!! sei lentoo! {target.get_name()} schiva il colpo di {self.get_name()}' + msg= f'Ehhhh voleviiii!!! sei lentoo! {target.get_name_and_stats()} schiva il colpo di {self.get_name_and_stats()}' elif target.player_gender_is_female(): - msg= f'Ehhhh voleviiii!!! sei lentaa! {target.get_name()} schiva il colpo di {self.get_name()}' + msg= f'Ehhhh voleviiii!!! sei lentaa! {target.get_name_and_stats()} schiva il colpo di {self.get_name_and_stats()}' else: - msg= f'Ehhhh voleviiii!!! sei lent##! {target.get_name()} schiva il colpo di {self.get_name()}' + msg= f'Ehhhh voleviiii!!! sei lent##! {target.get_name_and_stats()} schiva il colpo di {self.get_name_and_stats()}' return 0, msg target.accuses_damage(self.damage) - msg= f'{self.get_name()} Colpisce {target.get_name()}' + msg= f'{self.get_name_and_stats()} Colpisce {target.get_name_and_stats()}' self.kills+= 1 return self.damage, msg def get_item(self, item): if self.get_inventory_weight() + item.get_weight() >= self.get_max_weight(): if self.player_gender_is_male(): - print(f'Sono sovraccarico, {self.get_name} non puo\' prendere questo oggetto') + print(f'Sono sovraccarico, {self.get_name_and_stats} non puo\' prendere questo oggetto') elif self.player_gender_is_female(): - print(f'Sono sovraccarica, {self.get_name} non puo\' prendere questo oggetto') + print(f'Sono sovraccarica, {self.get_name_and_stats} non puo\' prendere questo oggetto') else: - print(f'Sono sovraccaric#, {self.get_name} non puo\' prendere questo oggetto') + print(f'Sono sovraccaric#, {self.get_name_and_stats} non puo\' prendere questo oggetto') return False self.inventory.append(item)