mirror of
https://github.com/RYGhub/royal-mifia.git
synced 2024-11-25 15:14:18 +00:00
Ristrutturato un po' di codice perchè prima non aveva senso
This commit is contained in:
parent
1619c43bf0
commit
0f9040a36e
1 changed files with 9 additions and 8 deletions
17
main.py
17
main.py
|
@ -18,13 +18,13 @@ updater = Updater(token)
|
||||||
# Ruoli possibili per i giocatori
|
# Ruoli possibili per i giocatori
|
||||||
# Base di un ruolo
|
# Base di un ruolo
|
||||||
class Role:
|
class Role:
|
||||||
|
"""Classe base di un ruolo. Da qui si sviluppano tutti gli altri ruoli."""
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.icon = "-"
|
self.icon = "-"
|
||||||
self.team = 'None' # Squadra: 'None', 'Good', 'Evil'
|
self.team = 'None' # Squadra: 'None', 'Good', 'Evil'
|
||||||
self.name = "UNDEFINED"
|
self.name = "UNDEFINED"
|
||||||
self.haspower = False
|
self.haspower = False
|
||||||
self.poweruses = 0
|
self.poweruses = 0
|
||||||
self.protectedby = None # Protettore
|
|
||||||
|
|
||||||
def power(self, bot, game, player, arg):
|
def power(self, bot, game, player, arg):
|
||||||
pass
|
pass
|
||||||
|
@ -58,15 +58,15 @@ class Mifioso(Role):
|
||||||
def onendday(self, bot, game):
|
def onendday(self, bot, game):
|
||||||
# Uccidi il bersaglio
|
# Uccidi il bersaglio
|
||||||
if self.target is not None:
|
if self.target is not None:
|
||||||
if self.target.role.protectedby is None:
|
if self.target.protectedby is None:
|
||||||
self.target.kill()
|
self.target.kill()
|
||||||
game.message(bot, "{0} è stato ucciso dalla Mifia.\n"
|
game.message(bot, "{0} è stato ucciso dalla Mifia.\n"
|
||||||
"Era un {1} {2}."
|
"Era un {1} {2}."
|
||||||
.format(self.target.tusername, self.target.role.icon, self.target.role.name))
|
.format(self.target.tusername, self.target.role.icon, self.target.role.name))
|
||||||
else:
|
else:
|
||||||
game.message(bot, "{0} è stato protetto dalla Mifia da {1} {2}!\n"
|
game.message(bot, "{0} è stato protetto dalla Mifia da {1} {2}!\n"
|
||||||
.format(self.target.tusername, self.target.role.protectedby.role.icon,
|
.format(self.target.tusername, self.target.protectedby.role.icon,
|
||||||
self.target.role.protectedby.tusername))
|
self.target.protectedby.tusername))
|
||||||
self.target = None
|
self.target = None
|
||||||
|
|
||||||
|
|
||||||
|
@ -108,14 +108,14 @@ class Angelo(Role):
|
||||||
# Imposta qualcuno come bersaglio
|
# Imposta qualcuno come bersaglio
|
||||||
selected = game.findplayerbyusername(arg)
|
selected = game.findplayerbyusername(arg)
|
||||||
if player is not selected and selected is not None:
|
if player is not selected and selected is not None:
|
||||||
selected.role.protectedby = player
|
selected.protectedby = player
|
||||||
self.protecting = selected
|
self.protecting = selected
|
||||||
player.message(bot, "Hai selezionato come protetto {0}.".format(self.protecting.tusername))
|
player.message(bot, "Hai selezionato come protetto {0}.".format(self.protecting.tusername))
|
||||||
|
|
||||||
def onendday(self, bot, game):
|
def onendday(self, bot, game):
|
||||||
# Resetta la protezione
|
# Resetta la protezione
|
||||||
if self.protecting is not None:
|
if self.protecting is not None:
|
||||||
self.protecting.role.protectedby = None
|
self.protecting.protectedby = None
|
||||||
self.protecting = None
|
self.protecting = None
|
||||||
|
|
||||||
|
|
||||||
|
@ -134,6 +134,7 @@ class Player:
|
||||||
self.alive = True
|
self.alive = True
|
||||||
self.votingfor = None # Diventa un player se ha votato
|
self.votingfor = None # Diventa un player se ha votato
|
||||||
self.votes = 0 # Voti. Aggiornato da updatevotes()
|
self.votes = 0 # Voti. Aggiornato da updatevotes()
|
||||||
|
self.protectedby = None # Protettore. Oggetto player che protegge questo giocatore dalla mifia.
|
||||||
|
|
||||||
# Classe di ogni partita
|
# Classe di ogni partita
|
||||||
class Game:
|
class Game:
|
||||||
|
@ -229,7 +230,7 @@ class Game:
|
||||||
elif (mostvoted is None and player.votes >= 1) or (player.votes > mostvoted.votes):
|
elif (mostvoted is None and player.votes >= 1) or (player.votes > mostvoted.votes):
|
||||||
mostvoted = player
|
mostvoted = player
|
||||||
elif mostvoted is not None and player.votes == mostvoted.votes:
|
elif mostvoted is not None and player.votes == mostvoted.votes:
|
||||||
# Non sono sicuro che questo algoritmo sia effettivamente il più equo. Ma vabbè, non succederà mai
|
# Questo algoritmo non è equo per un pareggio a tre. Riscriverlo se c'è qualche problema
|
||||||
mostvoted = random.choice([player, mostvoted])
|
mostvoted = random.choice([player, mostvoted])
|
||||||
return mostvoted
|
return mostvoted
|
||||||
|
|
||||||
|
@ -262,7 +263,7 @@ class Game:
|
||||||
royal = 0
|
royal = 0
|
||||||
mifiosi = 0
|
mifiosi = 0
|
||||||
for player in self.players:
|
for player in self.players:
|
||||||
if player.alive and isinstance(player.role, Mifioso):
|
if player.alive and player.role.team == 'Evil':
|
||||||
mifiosi += 1
|
mifiosi += 1
|
||||||
elif player.alive and player.role.team == 'Good':
|
elif player.alive and player.role.team == 'Good':
|
||||||
royal += 1
|
royal += 1
|
||||||
|
|
Loading…
Reference in a new issue