mirror of
https://github.com/RYGhub/royal-mifia.git
synced 2024-11-29 09:04:18 +00:00
FINALLY
This commit is contained in:
parent
ccb43cb955
commit
5482090749
1 changed files with 56 additions and 44 deletions
94
main.py
94
main.py
|
@ -6,7 +6,10 @@ import random
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
logger.setLevel(logging.DEBUG)
|
logger.setLevel(logging.WARN)
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.WARN,
|
||||||
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
||||||
|
|
||||||
token = filemanager.readfile('telegramapi.txt')
|
token = filemanager.readfile('telegramapi.txt')
|
||||||
updater = Updater(token)
|
updater = Updater(token)
|
||||||
|
@ -15,12 +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:
|
||||||
icon = "-"
|
def __init__(self):
|
||||||
team = 'None' # Squadra: 'None', 'Good', 'Evil'
|
self.icon = "-"
|
||||||
name = "UNDEFINED"
|
self.team = 'None' # Squadra: 'None', 'Good', 'Evil'
|
||||||
haspower = False
|
self.name = "UNDEFINED"
|
||||||
poweruses = 0
|
self.haspower = False
|
||||||
protectedby = None # Protettore
|
self.poweruses = 0
|
||||||
|
self.protectedby = None # Protettore
|
||||||
|
|
||||||
def power(self, bot, game, player, arg):
|
def power(self, bot, game, player, arg):
|
||||||
pass
|
pass
|
||||||
|
@ -30,16 +34,20 @@ class Role:
|
||||||
|
|
||||||
|
|
||||||
class Royal(Role):
|
class Royal(Role):
|
||||||
icon = "\U0001F610"
|
def __init__(self):
|
||||||
team = 'Good'
|
super().__init__()
|
||||||
name = "Royal"
|
self.icon = "\U0001F610"
|
||||||
|
self.team = 'Good'
|
||||||
|
self.name = "Royal"
|
||||||
|
|
||||||
|
|
||||||
class Mifioso(Role):
|
class Mifioso(Role):
|
||||||
icon = "\U0001F47F"
|
def __init__(self):
|
||||||
team = 'Evil'
|
super().__init__()
|
||||||
target = None
|
self.icon = "\U0001F47F"
|
||||||
name = "Mifioso"
|
self.team = 'Evil'
|
||||||
|
self.target = None
|
||||||
|
self.name = "Mifioso"
|
||||||
|
|
||||||
def power(self, bot, game, player, arg):
|
def power(self, bot, game, player, arg):
|
||||||
# Imposta qualcuno come bersaglio
|
# Imposta qualcuno come bersaglio
|
||||||
|
@ -57,16 +65,18 @@ class Mifioso(Role):
|
||||||
.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.icon,
|
.format(self.target.tusername, self.target.role.protectedby.role.icon,
|
||||||
self.target.role.protectedby.tusername))
|
self.target.role.protectedby.tusername))
|
||||||
self.target = None
|
self.target = None
|
||||||
|
|
||||||
|
|
||||||
class Investigatore(Role):
|
class Investigatore(Role):
|
||||||
icon = "\U0001F575"
|
def __init__(self):
|
||||||
team = 'Good'
|
super().__init__()
|
||||||
poweruses = 1
|
self.icon = "\U0001F575"
|
||||||
name = "Investigatore"
|
self.team = 'Good'
|
||||||
|
self.poweruses = 1
|
||||||
|
self.name = "Investigatore"
|
||||||
|
|
||||||
def power(self, bot, game, player, arg):
|
def power(self, bot, game, player, arg):
|
||||||
if self.poweruses > 0:
|
if self.poweruses > 0:
|
||||||
|
@ -87,10 +97,12 @@ class Investigatore(Role):
|
||||||
|
|
||||||
|
|
||||||
class Angelo(Role):
|
class Angelo(Role):
|
||||||
icon = "\U0001F607"
|
def __init__(self):
|
||||||
team = 'Good' # Squadra: 'None', 'Good', 'Evil'
|
super().__init__()
|
||||||
name = "Angelo"
|
self.icon = "\U0001F607"
|
||||||
protecting = None # Protetto
|
self.team = 'Good' # Squadra: 'None', 'Good', 'Evil'
|
||||||
|
self.name = "Angelo"
|
||||||
|
self.protecting = None # Protetto
|
||||||
|
|
||||||
def power(self, bot, game, player, arg):
|
def power(self, bot, game, player, arg):
|
||||||
# Imposta qualcuno come bersaglio
|
# Imposta qualcuno come bersaglio
|
||||||
|
@ -108,13 +120,6 @@ class Angelo(Role):
|
||||||
|
|
||||||
# Classi per i giocatori
|
# Classi per i giocatori
|
||||||
class Player:
|
class Player:
|
||||||
tid = int()
|
|
||||||
tusername = str()
|
|
||||||
role = Role() # Di base, ogni giocatore è un ruolo indefinito
|
|
||||||
alive = True
|
|
||||||
votingfor = None # Diventa un player se ha votato
|
|
||||||
votes = 0 # Voti. Aggiornato da updatevotes()
|
|
||||||
|
|
||||||
def message(self, bot, text):
|
def message(self, bot, text):
|
||||||
bot.sendMessage(self.tid, text)
|
bot.sendMessage(self.tid, text)
|
||||||
|
|
||||||
|
@ -124,19 +129,20 @@ class Player:
|
||||||
def __init__(self, tid, tusername):
|
def __init__(self, tid, tusername):
|
||||||
self.tid = tid
|
self.tid = tid
|
||||||
self.tusername = tusername
|
self.tusername = tusername
|
||||||
|
self.role = Role() # Di base, ogni giocatore è un ruolo indefinito
|
||||||
|
self.alive = True
|
||||||
|
self.votingfor = None # Diventa un player se ha votato
|
||||||
|
self.votes = 0 # Voti. Aggiornato da updatevotes()
|
||||||
|
|
||||||
|
|
||||||
# Classe di ogni partita
|
# Classe di ogni partita
|
||||||
class Game:
|
class Game:
|
||||||
adminid = int()
|
|
||||||
groupid = int()
|
|
||||||
players = list()
|
|
||||||
tokill = list() # Giocatori che verranno uccisi all'endday
|
|
||||||
phase = 'Join' # Fase di gioco: 'Join', 'Voting', 'Ended'
|
|
||||||
|
|
||||||
def __init__(self, groupid, adminid):
|
def __init__(self, groupid, adminid):
|
||||||
self.groupid = groupid
|
self.groupid = groupid
|
||||||
self.adminid = adminid
|
self.adminid = adminid
|
||||||
|
self.players = list()
|
||||||
|
self.tokill = list() # Giocatori che verranno uccisi all'endday
|
||||||
|
self.phase = 'Join' # Fase di gioco: 'Join', 'Voting', 'Ended'
|
||||||
|
|
||||||
def message(self, bot, text):
|
def message(self, bot, text):
|
||||||
bot.sendMessage(self.groupid, text)
|
bot.sendMessage(self.groupid, text)
|
||||||
|
@ -234,15 +240,15 @@ class Game:
|
||||||
# Mifiosi
|
# Mifiosi
|
||||||
for player in self.players:
|
for player in self.players:
|
||||||
if isinstance(player.role, Mifioso):
|
if isinstance(player.role, Mifioso):
|
||||||
player.role.onendday(self, bot)
|
player.role.onendday(bot, self)
|
||||||
# Investigatori
|
# Investigatori
|
||||||
for player in self.players:
|
for player in self.players:
|
||||||
if isinstance(player.role, Investigatore):
|
if isinstance(player.role, Investigatore):
|
||||||
player.role.onendday(self, bot)
|
player.role.onendday(bot, self)
|
||||||
# Angeli
|
# Angeli
|
||||||
for player in self.players:
|
for player in self.players:
|
||||||
if isinstance(player.role, Angelo):
|
if isinstance(player.role, Angelo):
|
||||||
player.role.onendday(self, bot)
|
player.role.onendday(bot, self)
|
||||||
lynched = self.mostvotedplayer()
|
lynched = self.mostvotedplayer()
|
||||||
if lynched is not None:
|
if lynched is not None:
|
||||||
self.message(bot, "{0} era il più votato ed è stato ucciso dai Royal.\n"
|
self.message(bot, "{0} era il più votato ed è stato ucciso dai Royal.\n"
|
||||||
|
@ -309,7 +315,7 @@ def join(bot, update):
|
||||||
if p is None:
|
if p is None:
|
||||||
p = Player(update.message.from_user['id'], update.message.from_user['username'])
|
p = Player(update.message.from_user['id'], update.message.from_user['username'])
|
||||||
game.players.append(p)
|
game.players.append(p)
|
||||||
bot.sendMessage(update.message.chat['id'], "Unito alla partita: " + repr(p))
|
bot.sendMessage(update.message.chat['id'], "Unito alla partita: " + str(p.tid))
|
||||||
else:
|
else:
|
||||||
bot.sendMessage(update.message.chat['id'], "Ti sei già unito alla partita: " + repr(p))
|
bot.sendMessage(update.message.chat['id'], "Ti sei già unito alla partita: " + repr(p))
|
||||||
|
|
||||||
|
@ -363,8 +369,14 @@ def endjoin(bot, update):
|
||||||
game = findgamebyid(update.message.chat['id'])
|
game = findgamebyid(update.message.chat['id'])
|
||||||
if game is not None and game.phase is 'Join' and update.message.from_user['id'] == game.adminid:
|
if game is not None and game.phase is 'Join' and update.message.from_user['id'] == game.adminid:
|
||||||
game.phase = 'Voting'
|
game.phase = 'Voting'
|
||||||
bot.sendMessage(update.message.chat['id'], "La fase di join è terminata.")
|
game.message(bot, "La fase di join è terminata.")
|
||||||
|
try:
|
||||||
game.assignroles(bot, mifia=1, investigatore=0, angelo=1)
|
game.assignroles(bot, mifia=1, investigatore=0, angelo=1)
|
||||||
|
except IndexError:
|
||||||
|
game.message(bot, "Non ci sono abbastanza giocatori per avviare la partita.\n"
|
||||||
|
"La partita è annullata.")
|
||||||
|
game.endgame()
|
||||||
|
else:
|
||||||
bot.sendMessage(update.message.chat['id'], "I ruoli sono stati assegnati.\n"
|
bot.sendMessage(update.message.chat['id'], "I ruoli sono stati assegnati.\n"
|
||||||
"Controlla la chat con @mifiabot.")
|
"Controlla la chat con @mifiabot.")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue