From 22ab2363f59a43941a4ec70baeea5ced9ac75acb Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Fri, 1 Apr 2016 17:39:38 +0200 Subject: [PATCH 01/20] Creata classe giocatore --- mifia.py | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 mifia.py diff --git a/mifia.py b/mifia.py new file mode 100644 index 00000000..500835ee --- /dev/null +++ b/mifia.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- + + +class Player: + def __init__(self, iid, iusername, irole): + self.id = iid + self.username = iusername + self.role = irole + From 56f020af3a41e9c28454f307a5412f7626f0c10d Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Fri, 1 Apr 2016 17:47:20 +0200 Subject: [PATCH 02/20] Aggiunta una classe gioco --- mifia.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/mifia.py b/mifia.py index 500835ee..1bd30027 100644 --- a/mifia.py +++ b/mifia.py @@ -2,8 +2,11 @@ class Player: - def __init__(self, iid, iusername, irole): - self.id = iid - self.username = iusername - self.role = irole + telegramid = int() + username = str() + role = int() + +class Game: + chat = int() + players = list() \ No newline at end of file From 29ea17b9b8c0e937d1adb093ddc29de832b56927 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Fri, 1 Apr 2016 18:20:10 +0200 Subject: [PATCH 03/20] Aggiunte funzioni al player --- mifia.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/mifia.py b/mifia.py index 1bd30027..16a2fd98 100644 --- a/mifia.py +++ b/mifia.py @@ -1,12 +1,24 @@ # -*- coding: utf-8 -*- +import telegram class Player: telegramid = int() username = str() role = int() + alive = True + + def message(self, text): + """Manda un messaggio al giocatore + :param text: Testo del messaggio + """ + telegram.sendmessage(text, self.telegramid) + + def kill(self): + """Uccidi il giocatore""" + self.alive = False class Game: chat = int() - players = list() \ No newline at end of file + players = list() From 0eacbd4293bed800e6526b4aadfc9618091d3e45 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Fri, 1 Apr 2016 22:08:08 +0200 Subject: [PATCH 04/20] Aggiunto cose --- mifia.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/mifia.py b/mifia.py index 16a2fd98..aceb5da0 100644 --- a/mifia.py +++ b/mifia.py @@ -22,3 +22,26 @@ class Player: class Game: chat = int() players = list() + + def message(self, text): + """Manda un messaggio alla chat generale del gioco + :param text: Testo del messaggio + """ + telegram.sendmessage(text, self.telegramid) + + def displaystatus(self): + """Visualizza lo stato attuale della partita""" + tosend = "Stato attuale del gioco: \n" + for player in self.players: + if not player.alive: + tosend += "\U0001F480 " + else: + tosend += "\U0001F636 " + tosend += player.username + "\n" + self.message(tosend) + + def addplayer(self, player): + """Aggiungi un giocatore alla partita + :param player: Oggetto del giocatore da aggiungere + """ + self.players.append(player) From 905c5dc22e4d956d1424d7eaf0eccfe50d24bb1e Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Fri, 1 Apr 2016 22:28:41 +0200 Subject: [PATCH 05/20] Robe --- mifia.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/mifia.py b/mifia.py index aceb5da0..78465412 100644 --- a/mifia.py +++ b/mifia.py @@ -5,7 +5,7 @@ import telegram class Player: telegramid = int() username = str() - role = int() + role = 0 # 0 = normale, 1 = mifia alive = True def message(self, text): @@ -27,7 +27,15 @@ class Game: """Manda un messaggio alla chat generale del gioco :param text: Testo del messaggio """ - telegram.sendmessage(text, self.telegramid) + telegram.sendmessage(text, self.chat) + + def mifiamessage(self, text): + """Manda un messaggio alla chat generale del gioco + :param text: Testo del messaggio + """ + for player in self.players: + if player.role == 1: + telegram.sendmessage(text, player.telegramid) def displaystatus(self): """Visualizza lo stato attuale della partita""" @@ -40,6 +48,19 @@ class Game: tosend += player.username + "\n" self.message(tosend) + def displayfullstatus(self): + """Visualizza lo stato attuale della partita (per admin?)""" + tosend = "Stato attuale del gioco: \n" + for player in self.players: + if not player.alive: + tosend += "_Morto_ " + elif player.role == 1: + tosend += "_Mifia_ " + else: + tosend += "_Civile_ " + tosend += player.username + "\n" + self.message(tosend) + def addplayer(self, player): """Aggiungi un giocatore alla partita :param player: Oggetto del giocatore da aggiungere From 8faec4496f87adabdb093845f8d250b24f78c341 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sun, 3 Apr 2016 13:14:05 +0200 Subject: [PATCH 06/20] Aggiunte altre cose --- mifia.py | 59 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 44 insertions(+), 15 deletions(-) diff --git a/mifia.py b/mifia.py index 78465412..f4a6026c 100644 --- a/mifia.py +++ b/mifia.py @@ -5,8 +5,10 @@ import telegram class Player: telegramid = int() username = str() - role = 0 # 0 = normale, 1 = mifia + role = 0 # 0 = normale, 1 = mifia alive = True + votedfor = str() + special = False def message(self, text): """Manda un messaggio al giocatore @@ -14,13 +16,10 @@ class Player: """ telegram.sendmessage(text, self.telegramid) - def kill(self): - """Uccidi il giocatore""" - self.alive = False - class Game: - chat = int() + groupid = int() + adminid = int() players = list() def message(self, text): @@ -29,7 +28,13 @@ class Game: """ telegram.sendmessage(text, self.chat) - def mifiamessage(self, text): + def adminmessage(self, text): + """Manda un messaggio all'admin del gioco + :param text: Testo del messaggio + """ + telegram.sendmessage(text, self.adminid) + + def evilmessage(self, text): """Manda un messaggio alla chat generale del gioco :param text: Testo del messaggio """ @@ -37,8 +42,8 @@ class Game: if player.role == 1: telegram.sendmessage(text, player.telegramid) - def displaystatus(self): - """Visualizza lo stato attuale della partita""" + def status(self): + """Restituisci lo stato attuale della partita in una stringa unicode""" tosend = "Stato attuale del gioco: \n" for player in self.players: if not player.alive: @@ -46,23 +51,47 @@ class Game: else: tosend += "\U0001F636 " tosend += player.username + "\n" - self.message(tosend) + return tosend - def displayfullstatus(self): - """Visualizza lo stato attuale della partita (per admin?)""" + def fullstatus(self): + """Restituisci lo stato attuale della partita (per admin?) in una stringa unicode""" tosend = "Stato attuale del gioco: \n" for player in self.players: if not player.alive: - tosend += "_Morto_ " + tosend += "\U0001F480 " elif player.role == 1: tosend += "_Mifia_ " else: - tosend += "_Civile_ " + tosend += "\U0001F636 " tosend += player.username + "\n" - self.message(tosend) + return tosend + + def findusername(self, username): + """Trova un giocatore con un certo nome utente + :param username: Nome utente da cercare + """ + for player in self.players: + if player.username == username: + return player + else: + return None + + def findid(self, telegramid): + """Trova un giocatore con un certo ID di telegram + :param telegramid: ID da cercare + """ + for player in self.players: + if player.telegramid == telegramid: + return player + else: + return None def addplayer(self, player): """Aggiungi un giocatore alla partita :param player: Oggetto del giocatore da aggiungere """ self.players.append(player) + + def mostvoted(self): + """Trova il giocatore più votato""" + From 12b1227d6ef6034f4d7d35dfd7752ec8e0d25a9b Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 5 Apr 2016 17:12:17 +0200 Subject: [PATCH 07/20] Cose --- mifia.py | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/mifia.py b/mifia.py index f4a6026c..bfcb1ee6 100644 --- a/mifia.py +++ b/mifia.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- import telegram - +import pickle class Player: telegramid = int() username = str() - role = 0 # 0 = normale, 1 = mifia + role = 0 # 0 normale | 1 rryg | 2 resistenza alive = True votedfor = str() special = False @@ -35,7 +35,7 @@ class Game: telegram.sendmessage(text, self.adminid) def evilmessage(self, text): - """Manda un messaggio alla chat generale del gioco + """Manda un messaggio al team dei nemici del gioco :param text: Testo del messaggio """ for player in self.players: @@ -60,7 +60,7 @@ class Game: if not player.alive: tosend += "\U0001F480 " elif player.role == 1: - tosend += "_Mifia_ " + tosend += "RRYG " else: tosend += "\U0001F636 " tosend += player.username + "\n" @@ -94,4 +94,52 @@ class Game: def mostvoted(self): """Trova il giocatore più votato""" - + votelist = dict() + for player in self.players: + if player.votedfor != str(): + if player.votedfor not in votelist: + votelist[player.votedfor] = 1 + else: + votelist[player.votedfor] += 1 + mostvoted = str() + mostvotes = int() + for player in votelist: + if mostvoted == str(): + mostvoted = player + mostvotes = votelist[player] + else: + if votelist[player] > mostvotes: + mostvoted = player + mostvotes = votelist[player] + return self.findusername(mostvoted) + + def save(self): + """Salva in un file di testo con il numero del gruppo lo stato attuale del gioco""" + try: + file = open(str(self.groupid) + ".txt", "w") + except OSError: + file = open(str(self.groupid) + ".txt", "x") + pickle.dump(self, file) + + def endday(self): + for player in self.players: + player.votedfor = str() + if player.role != 0: + player.special = True + killed = self.mostvoted() + killed.alive = False + self.message(killed.username + " è stato il più votato del giorno.") + + +def load(filename): + """Restituisci da un file di testo con il numero del gruppo lo stato del gioco (Funzione non sicura, non importare + file a caso pls) + :param filename: Nome del file da cui caricare lo stato""" + try: + file = open(str(filename) + ".txt", "r") + except OSError: + return None + else: + return pickle.load(file) + +partiteincorso = list() From fdfb8b57cac73bca50c96d49b8af931f01020e16 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 5 Apr 2016 21:01:25 +0200 Subject: [PATCH 08/20] Cose --- mifia.py | 53 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/mifia.py b/mifia.py index bfcb1ee6..bc2a2ee9 100644 --- a/mifia.py +++ b/mifia.py @@ -2,10 +2,11 @@ import telegram import pickle + class Player: telegramid = int() username = str() - role = 0 # 0 normale | 1 rryg | 2 resistenza + role = 0 # 0 normale | 1 rryg | 2 resistenza alive = True votedfor = str() special = False @@ -42,7 +43,7 @@ class Game: if player.role == 1: telegram.sendmessage(text, player.telegramid) - def status(self): + def status(self) -> str: """Restituisci lo stato attuale della partita in una stringa unicode""" tosend = "Stato attuale del gioco: \n" for player in self.players: @@ -53,7 +54,7 @@ class Game: tosend += player.username + "\n" return tosend - def fullstatus(self): + def fullstatus(self) -> str: """Restituisci lo stato attuale della partita (per admin?) in una stringa unicode""" tosend = "Stato attuale del gioco: \n" for player in self.players: @@ -66,7 +67,7 @@ class Game: tosend += player.username + "\n" return tosend - def findusername(self, username): + def findusername(self, username) -> Player: """Trova un giocatore con un certo nome utente :param username: Nome utente da cercare """ @@ -76,7 +77,7 @@ class Game: else: return None - def findid(self, telegramid): + def findid(self, telegramid) -> Player: """Trova un giocatore con un certo ID di telegram :param telegramid: ID da cercare """ @@ -92,7 +93,7 @@ class Game: """ self.players.append(player) - def mostvoted(self): + def mostvoted(self) -> Player: """Trova il giocatore più votato""" votelist = dict() for player in self.players: @@ -131,7 +132,7 @@ class Game: self.message(killed.username + " è stato il più votato del giorno.") -def load(filename): +def load(filename) -> Game: """Restituisci da un file di testo con il numero del gruppo lo stato del gioco (Funzione non sicura, non importare file a caso pls) :param filename: Nome del file da cui caricare lo stato""" @@ -142,4 +143,42 @@ def load(filename): else: return pickle.load(file) + partiteincorso = list() + + +def findgame(chatid) -> Game: + for game in partiteincorso: + if game.groupid == chatid: + return game + else: + return None + + +while True: + t = telegram.getupdates() + if 'text' in t: + if t['text'].startswith("/newgame"): + g = findgame(t['chat']['id']) + if g is None: + g = Game() + g.groupid = t['chat']['id'] + g.adminid = t['from']['id'] + partiteincorso.append(g) + else: + telegram.sendmessage("Una partita è già in corso qui.", t['chat']['id'], t['message_id']) + elif t['text'].startswith("/loadgame"): + # Facendo così mi sovrascrive il Game dentro la lista o no? + g = findgame(t['chat']['id']) + add = False + if g is None: + add = True + g = load(t['chat']['id']) + if add: + partiteincorso.append(g) + if t['text'].startswith("/echo"): + g = findgame(t['chat']['id']) + if g is None: + telegram.sendmessage("Nessuna partita in corso.", t['chat']['id'], t['message_id']) + else: + g.message(g.fullstatus()) \ No newline at end of file From d09339c49cf2f0f581695097d870014dbaec82a9 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 5 Apr 2016 21:24:00 +0200 Subject: [PATCH 09/20] Cose --- mifia.py | 61 +++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 21 deletions(-) diff --git a/mifia.py b/mifia.py index bc2a2ee9..2b328d3d 100644 --- a/mifia.py +++ b/mifia.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import telegram import pickle - +import random class Player: telegramid = int() @@ -22,12 +22,13 @@ class Game: groupid = int() adminid = int() players = list() + joinphase = True def message(self, text): """Manda un messaggio alla chat generale del gioco :param text: Testo del messaggio """ - telegram.sendmessage(text, self.chat) + telegram.sendmessage(text, self.groupid) def adminmessage(self, text): """Manda un messaggio all'admin del gioco @@ -158,27 +159,45 @@ def findgame(chatid) -> Game: while True: t = telegram.getupdates() if 'text' in t: - if t['text'].startswith("/newgame"): - g = findgame(t['chat']['id']) - if g is None: + g = findgame(t['chat']['id']) + if g is None: + if t['text'].startswith("/newgame"): g = Game() g.groupid = t['chat']['id'] g.adminid = t['from']['id'] partiteincorso.append(g) - else: - telegram.sendmessage("Una partita è già in corso qui.", t['chat']['id'], t['message_id']) - elif t['text'].startswith("/loadgame"): - # Facendo così mi sovrascrive il Game dentro la lista o no? - g = findgame(t['chat']['id']) - add = False - if g is None: - add = True - g = load(t['chat']['id']) - if add: - partiteincorso.append(g) - if t['text'].startswith("/echo"): - g = findgame(t['chat']['id']) - if g is None: + elif t['text'].startswith("/load"): + g = load(t['chat']['id']) + elif t['text'].startswith("/status"): telegram.sendmessage("Nessuna partita in corso.", t['chat']['id'], t['message_id']) - else: - g.message(g.fullstatus()) \ No newline at end of file + # else: + # telegram.sendmessage("Comando non riconosciuto. Avvia una partita prima!", t['chat']['id'], + # t['message_id']) + else: + if t['text'].startswith("/join"): + p = Player() + p.telegramid = t['from']['id'] + # Qui crasha se non è stato impostato un username. Fare qualcosa? + p.username = t['from']['username'] + # Assegnazione dei ruoli + # Spiegare meglio cosa deve fare ogni ruolo? + balanced = random.randrange(0, 100, 1) + if balanced <= 15: + p.role = 1 + p.special = True + p.message("Sei stato assegnato alla squadra *MIFIA*.") + elif balanced >= 95: + p.role = 2 + p.special = True + p.message("Sei stato assegnato alla squadra *ROYAL*.") + p.message("Hai il ruolo speciale di detective.") + else: + p.role = 0 + p.message("Sei stato assegnato alla squadra *ROYAL*.") + g.addplayer(p) + g.message(p.username + " si è unito alla partita!") + elif t['text'].startswith("/save"): + g.save() + elif t['text'].startswith("/status"): + if t['from']['id'] == g.adminid: + g.adminmessage(g.fullstatus()) From 904480f3affbfe29d721f35ee3f327f264425c87 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 5 Apr 2016 21:55:51 +0200 Subject: [PATCH 10/20] =?UTF-8?q?c'=C3=A8=20ancora=20un=20sacco=20di=20rob?= =?UTF-8?q?a=20da=20fare?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mifia.py | 76 ++++++++++++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 32 deletions(-) diff --git a/mifia.py b/mifia.py index 2b328d3d..7653edb8 100644 --- a/mifia.py +++ b/mifia.py @@ -62,7 +62,9 @@ class Game: if not player.alive: tosend += "\U0001F480 " elif player.role == 1: - tosend += "RRYG " + tosend += "\U0001F608 " + elif player.role == 2: + tosend += "Detective " else: tosend += "\U0001F636 " tosend += player.username + "\n" @@ -115,13 +117,10 @@ class Game: mostvotes = votelist[player] return self.findusername(mostvoted) - def save(self): - """Salva in un file di testo con il numero del gruppo lo stato attuale del gioco""" - try: - file = open(str(self.groupid) + ".txt", "w") - except OSError: - file = open(str(self.groupid) + ".txt", "x") - pickle.dump(self, file) + # def save(self): + # """Salva in un file di testo con il numero del gruppo lo stato attuale del gioco""" + # file = open(str(self.groupid) + ".txt", "x") + # pickle.dump(self, file) def endday(self): for player in self.players: @@ -166,8 +165,9 @@ while True: g.groupid = t['chat']['id'] g.adminid = t['from']['id'] partiteincorso.append(g) - elif t['text'].startswith("/load"): - g = load(t['chat']['id']) + g.message("Partita creata!") + # elif t['text'].startswith("/load"): + # g = load(t['chat']['id']) elif t['text'].startswith("/status"): telegram.sendmessage("Nessuna partita in corso.", t['chat']['id'], t['message_id']) # else: @@ -175,29 +175,41 @@ while True: # t['message_id']) else: if t['text'].startswith("/join"): - p = Player() - p.telegramid = t['from']['id'] - # Qui crasha se non è stato impostato un username. Fare qualcosa? - p.username = t['from']['username'] - # Assegnazione dei ruoli - # Spiegare meglio cosa deve fare ogni ruolo? - balanced = random.randrange(0, 100, 1) - if balanced <= 15: - p.role = 1 - p.special = True - p.message("Sei stato assegnato alla squadra *MIFIA*.") - elif balanced >= 95: - p.role = 2 - p.special = True - p.message("Sei stato assegnato alla squadra *ROYAL*.") - p.message("Hai il ruolo speciale di detective.") + if g.joinphase: + p = Player() + p.telegramid = t['from']['id'] + # Qui crasha se non è stato impostato un username. Fare qualcosa? + p.username = t['from']['username'] + # Assegnazione dei ruoli + # Spiegare meglio cosa deve fare ogni ruolo? + balanced = random.randrange(0, 100, 1) + if balanced <= 15: + p.role = 1 + p.special = True + p.message("Sei stato assegnato alla squadra *MIFIA*.") + p.message("L'ID della partita è " + g.groupid + ".\n" + "Non dimenticarlo. ") + elif balanced >= 95: + p.role = 2 + p.special = True + p.message("Sei stato assegnato alla squadra *ROYAL*.") + p.message("Hai il ruolo speciale di detective.") + else: + p.role = 0 + p.message("Sei stato assegnato alla squadra *ROYAL*.") + g.addplayer(p) + g.message(p.username + " si è unito alla partita!") else: - p.role = 0 - p.message("Sei stato assegnato alla squadra *ROYAL*.") - g.addplayer(p) - g.message(p.username + " si è unito alla partita!") - elif t['text'].startswith("/save"): - g.save() + g.message("La fase di iscrizione è terminata.") + # elif t['text'].startswith("/save"): + # g.save() elif t['text'].startswith("/status"): if t['from']['id'] == g.adminid: g.adminmessage(g.fullstatus()) + else: + g.message(g.status()) + elif t['text'].startswith("/endjoin"): + if t['from']['id'] == g.adminid: + g.message("Fase di iscrizione chiusa.") + g.message(g.status()) + elif t['text'].startswith("/") \ No newline at end of file From d8070b1ac25f90eb55104f25582e117ce1bb280f Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Tue, 5 Apr 2016 23:26:23 +0200 Subject: [PATCH 11/20] wtf was that ho passato la sera a debuggare --- mifia.py | 44 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/mifia.py b/mifia.py index 7653edb8..e42109ba 100644 --- a/mifia.py +++ b/mifia.py @@ -22,6 +22,7 @@ class Game: groupid = int() adminid = int() players = list() + tokill = list() joinphase = True def message(self, text): @@ -123,13 +124,15 @@ class Game: # pickle.dump(self, file) def endday(self): + self.message(self.mostvoted().username + " è stato il più votato del giorno.") + self.tokill.append(self.mostvoted()) + for killed in self.tokill: + self.message(killed.username + " è stato ucciso.") + killed.alive = False for player in self.players: player.votedfor = str() if player.role != 0: player.special = True - killed = self.mostvoted() - killed.alive = False - self.message(killed.username + " è stato il più votato del giorno.") def load(filename) -> Game: @@ -170,9 +173,21 @@ while True: # g = load(t['chat']['id']) elif t['text'].startswith("/status"): telegram.sendmessage("Nessuna partita in corso.", t['chat']['id'], t['message_id']) - # else: - # telegram.sendmessage("Comando non riconosciuto. Avvia una partita prima!", t['chat']['id'], - # t['message_id']) + else: + xtra = t['text'].split(' ') + try: + g = findgame(int(xtra[0])) + except ValueError: + g = None + if g is not None: + if xtra[1] == "SPECIAL": + if g.findid(t['from']['id']).role == 1 and g.findid(t['from']['id']).special: + target = g.findusername(xtra[2]) + if target is not None: + g.tokill.append(target) + g.findid(t['from']['id']).special = False + g.evilmessage("Il bersaglio di " + t['from']['username'] + " è " + target.username + + ".") else: if t['text'].startswith("/join"): if g.joinphase: @@ -183,11 +198,11 @@ while True: # Assegnazione dei ruoli # Spiegare meglio cosa deve fare ogni ruolo? balanced = random.randrange(0, 100, 1) - if balanced <= 15: + if balanced <= 100: p.role = 1 p.special = True p.message("Sei stato assegnato alla squadra *MIFIA*.") - p.message("L'ID della partita è " + g.groupid + ".\n" + p.message("L'ID della partita è " + str(g.groupid) + ".\n" "Non dimenticarlo. ") elif balanced >= 95: p.role = 2 @@ -212,4 +227,15 @@ while True: if t['from']['id'] == g.adminid: g.message("Fase di iscrizione chiusa.") g.message(g.status()) - elif t['text'].startswith("/") \ No newline at end of file + elif t['text'].startswith("/endday"): + if t['from']['id'] == g.adminid: + g.endday() + g.message(g.status()) + elif t['text'].startswith("/vote"): + username = t['text'].split(' ') + if g.findusername(username[1]) is not None: + voter = g.findid(t['from']['id']) + voter.votedfor = username[1] + g.message("Hai votato per " + username[1] + ".") + else: + g.message("La persona selezionata non esiste.") \ No newline at end of file From ef78ac06428f469ff1c9e0b5bcd2032578fa3ce7 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Wed, 6 Apr 2016 21:53:36 +0200 Subject: [PATCH 12/20] Finitotutto! --- .gitignore | 3 +- mifia.py | 115 ++++++++++++++++++++++++++++++++++------------------- 2 files changed, 77 insertions(+), 41 deletions(-) diff --git a/.gitignore b/.gitignore index 0929fbf9..09c7a231 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ hearthstoneapi.txt *.pyc .idea/* diario.txt -lolapi.txt \ No newline at end of file +lolapi.txt +save.txt \ No newline at end of file diff --git a/mifia.py b/mifia.py index e42109ba..ea3aa185 100644 --- a/mifia.py +++ b/mifia.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- import telegram -import pickle import random + class Player: telegramid = int() username = str() @@ -43,7 +43,7 @@ class Game: """ for player in self.players: if player.role == 1: - telegram.sendmessage(text, player.telegramid) + telegram.sendmessage("\U0001F608: " + text, player.telegramid) def status(self) -> str: """Restituisci lo stato attuale della partita in una stringa unicode""" @@ -65,18 +65,18 @@ class Game: elif player.role == 1: tosend += "\U0001F608 " elif player.role == 2: - tosend += "Detective " + tosend += "\U0001F46E " else: tosend += "\U0001F636 " tosend += player.username + "\n" return tosend - def findusername(self, username) -> Player: + def findusername(self, fusername) -> Player: """Trova un giocatore con un certo nome utente - :param username: Nome utente da cercare + :param fusername: Nome utente da cercare """ for player in self.players: - if player.username == username: + if player.username == fusername: return player else: return None @@ -101,7 +101,7 @@ class Game: """Trova il giocatore più votato""" votelist = dict() for player in self.players: - if player.votedfor != str(): + if player.votedfor != str() and player.alive: if player.votedfor not in votelist: votelist[player.votedfor] = 1 else: @@ -118,33 +118,34 @@ class Game: mostvotes = votelist[player] return self.findusername(mostvoted) - # def save(self): - # """Salva in un file di testo con il numero del gruppo lo stato attuale del gioco""" - # file = open(str(self.groupid) + ".txt", "x") - # pickle.dump(self, file) - def endday(self): - self.message(self.mostvoted().username + " è stato il più votato del giorno.") - self.tokill.append(self.mostvoted()) + votedout = self.mostvoted() + self.message(votedout.username + " è stato il più votato del giorno.") + self.tokill.append(votedout) for killed in self.tokill: - self.message(killed.username + " è stato ucciso.") + self.message(killed.username + " è stato ucciso.\n") + if killed.role == 1: + self.message("Era un Mifioso!") + elif killed.role == 2: + self.message("Era un Detective!") killed.alive = False for player in self.players: player.votedfor = str() if player.role != 0: player.special = True - - -def load(filename) -> Game: - """Restituisci da un file di testo con il numero del gruppo lo stato del gioco (Funzione non sicura, non importare - file a caso pls) - :param filename: Nome del file da cui caricare lo stato""" - try: - file = open(str(filename) + ".txt", "r") - except OSError: - return None - else: - return pickle.load(file) + # Controlla se la Royal Games ha vinto + zero = 0 + uno = 0 + for player in self.players: + if player.alive: + if player.role == 0 or player.role == 2: + zero += 1 + elif player.role == 1: + uno += 1 + if uno == 0: + self.message("*Il Team Royal ha vinto!*") + if uno >= zero: + self.message("*Il Team Mifia ha vinto!*") partiteincorso = list() @@ -169,12 +170,10 @@ while True: g.adminid = t['from']['id'] partiteincorso.append(g) g.message("Partita creata!") - # elif t['text'].startswith("/load"): - # g = load(t['chat']['id']) elif t['text'].startswith("/status"): telegram.sendmessage("Nessuna partita in corso.", t['chat']['id'], t['message_id']) else: - xtra = t['text'].split(' ') + xtra = t['text'].split(' ', 2) try: g = findgame(int(xtra[0])) except ValueError: @@ -186,32 +185,68 @@ while True: if target is not None: g.tokill.append(target) g.findid(t['from']['id']).special = False - g.evilmessage("Il bersaglio di " + t['from']['username'] + " è " + target.username + - ".") + g.evilmessage("Il bersaglio di " + t['from']['username'] + " è *" + target.username + + "*.") + elif g.findid(t['from']['id']).role == 2 and g.findid(t['from']['id']).special: + target = g.findusername(xtra[2]) + p = g.findid(t['from']['id']) + if target is not None: + if target.role == 0: + p.message(target.username + " è un Royal.") + elif target.role == 1: + p.message(target.username + " è un Mifioso.") + elif target.role == 2: + p.message(target.username + " è un Detective.") + p.special = False + elif xtra[1] == "CHAT": + if g.findid(t['from']['id']).role == 1: + g.evilmessage(xtra[2]) else: if t['text'].startswith("/join"): - if g.joinphase: + if g.joinphase and g.findid(t['from']['id']) is None: p = Player() p.telegramid = t['from']['id'] # Qui crasha se non è stato impostato un username. Fare qualcosa? p.username = t['from']['username'] # Assegnazione dei ruoli # Spiegare meglio cosa deve fare ogni ruolo? - balanced = random.randrange(0, 100, 1) - if balanced <= 100: + if len(g.players) % 10 == 1: p.role = 1 p.special = True p.message("Sei stato assegnato alla squadra *MIFIA*.") - p.message("L'ID della partita è " + str(g.groupid) + ".\n" - "Non dimenticarlo. ") - elif balanced >= 95: + p.message("Apparirai agli altri come un membro del team ROYAL. Depistali e non farti uccidere!") + p.message("Il team ROYAL ucciderà la persona più votata di ogni turno.\n" + "Per votare, scrivi `/vote username`!") + p.message("Scrivi in questa chat `" + str(g.groupid) + " CHAT messaggio` per mandare un" + " messaggio a tutto il tuo team.") + p.message("Scrivi in questa chat `" + str(g.groupid) + " SPECIAL nomeutente` per uccidere" + " qualcuno alla fine del giorno.") + p.message("La squadra Mifia vince se tutta la Royal Games è eliminata.") + p.message("Perdi se vieni ucciso.") + elif len(g.players) % 10 == 0: p.role = 2 p.special = True - p.message("Sei stato assegnato alla squadra *ROYAL*.") - p.message("Hai il ruolo speciale di detective.") + p.message("Sei stato assegnato alla squadra *ROYAL* con il ruolo di *DETECTIVE*.") + p.message("Apparirai agli altri come un membro del team ROYAL. " + "Non attirare l'attenzione dei Mifiosi su di te!") + p.message("Il team ROYAL ucciderà la persona più votata di ogni turno.\n" + "Per votare, scrivi `/vote username`!") + p.message("Tra di voi si nascondono dei Mifiosi.\n" + "Stanateli e uccideteli votando per le persone giuste!") + p.message("La squadra Royal vince se tutti i Mifiosi sono morti.") + p.message("La squadra Royal perde se sono vivi solo Mifiosi.") + p.message("Scrivi in questa chat `" + str(g.groupid) + " SPECIAL nomeutente` per usare il tuo " + " potere di detective e indagare sul ruolo di qualcuno per un giorno.") else: p.role = 0 + p.special = True p.message("Sei stato assegnato alla squadra *ROYAL*.") + p.message("Il team ROYAL ucciderà la persona più votata di ogni turno.\n" + "Per votare, scrivi `/vote username`!") + p.message("Tra di voi si nascondono dei Mifiosi.\n" + "Stanateli e uccideteli votando per le persone giuste!") + p.message("La squadra Royal vince se tutti i Mifiosi sono morti.") + p.message("La squadra Royal perde se sono vivi solo Mifiosi.") g.addplayer(p) g.message(p.username + " si è unito alla partita!") else: From 48be4c8831bae7d4a2f192f21b5eef280c1fb177 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Fri, 8 Apr 2016 12:03:46 +0200 Subject: [PATCH 13/20] ho fatto delle cose --- mifia.py | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/mifia.py b/mifia.py index ea3aa185..7087f5f6 100644 --- a/mifia.py +++ b/mifia.py @@ -1,6 +1,5 @@ # -*- coding: utf-8 -*- import telegram -import random class Player: @@ -23,7 +22,6 @@ class Game: adminid = int() players = list() tokill = list() - joinphase = True def message(self, text): """Manda un messaggio alla chat generale del gioco @@ -120,7 +118,7 @@ class Game: def endday(self): votedout = self.mostvoted() - self.message(votedout.username + " è stato il più votato del giorno.") + self.message(votedout.username + " è il più votato del giorno e sarà ucciso.") self.tokill.append(votedout) for killed in self.tokill: self.message(killed.username + " è stato ucciso.\n") @@ -143,9 +141,12 @@ class Game: elif player.role == 1: uno += 1 if uno == 0: - self.message("*Il Team Royal ha vinto!*") + self.message("*Il Team Royal ha vinto!*\n" + "Tutti i Mifiosi sono stati eliminati.") if uno >= zero: - self.message("*Il Team Mifia ha vinto!*") + self.message("*Il Team Mifia ha vinto!*\n" + "I Mifiosi rimasti sono più dei Royal.") + self.tokill = list() partiteincorso = list() @@ -203,14 +204,14 @@ while True: g.evilmessage(xtra[2]) else: if t['text'].startswith("/join"): - if g.joinphase and g.findid(t['from']['id']) is None: + if g.findid(t['from']['id']) is None: p = Player() p.telegramid = t['from']['id'] # Qui crasha se non è stato impostato un username. Fare qualcosa? p.username = t['from']['username'] # Assegnazione dei ruoli # Spiegare meglio cosa deve fare ogni ruolo? - if len(g.players) % 10 == 1: + if len(g.players) % 10 == 3: p.role = 1 p.special = True p.message("Sei stato assegnato alla squadra *MIFIA*.") @@ -223,7 +224,7 @@ while True: " qualcuno alla fine del giorno.") p.message("La squadra Mifia vince se tutta la Royal Games è eliminata.") p.message("Perdi se vieni ucciso.") - elif len(g.players) % 10 == 0: + elif len(g.players) % 10 == 2: p.role = 2 p.special = True p.message("Sei stato assegnato alla squadra *ROYAL* con il ruolo di *DETECTIVE*.") @@ -249,28 +250,23 @@ while True: p.message("La squadra Royal perde se sono vivi solo Mifiosi.") g.addplayer(p) g.message(p.username + " si è unito alla partita!") - else: - g.message("La fase di iscrizione è terminata.") - # elif t['text'].startswith("/save"): - # g.save() elif t['text'].startswith("/status"): if t['from']['id'] == g.adminid: g.adminmessage(g.fullstatus()) else: g.message(g.status()) - elif t['text'].startswith("/endjoin"): - if t['from']['id'] == g.adminid: - g.message("Fase di iscrizione chiusa.") - g.message(g.status()) elif t['text'].startswith("/endday"): if t['from']['id'] == g.adminid: g.endday() g.message(g.status()) elif t['text'].startswith("/vote"): username = t['text'].split(' ') - if g.findusername(username[1]) is not None: + if len(username) > 1 and g.findusername(username[1]) is not None: voter = g.findid(t['from']['id']) - voter.votedfor = username[1] - g.message("Hai votato per " + username[1] + ".") + if voter.alive: + voter.votedfor = username[1] + g.message("Hai votato per " + username[1] + ".") + else: + g.message("I morti non votano.") else: - g.message("La persona selezionata non esiste.") \ No newline at end of file + g.message("La persona selezionata non esiste.") From ae38a8bee3340181b442af80515b9eab5c2f0bec Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sun, 10 Apr 2016 14:04:04 +0200 Subject: [PATCH 14/20] Carica e salva partite? Forse? --- mifia.py | 56 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 49 insertions(+), 7 deletions(-) diff --git a/mifia.py b/mifia.py index 7087f5f6..72575ec7 100644 --- a/mifia.py +++ b/mifia.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- import telegram +import configparser class Player: @@ -17,6 +18,9 @@ class Player: telegram.sendmessage(text, self.telegramid) +partiteincorso = list() + + class Game: groupid = int() adminid = int() @@ -148,8 +152,24 @@ class Game: "I Mifiosi rimasti sono più dei Royal.") self.tokill = list() - -partiteincorso = list() + def save(self): + status = configparser.ConfigParser() + status['General'] = { + "groupid": self.groupid, + "adminid": self.adminid, + } + for player in self.players: + status[player.username] = { + "telegramid": player.username, + "role": player.role, + "alive": player.alive, + } + try: + f = open(str(self.groupid) + ".ini", "w") + except OSError: + open(str(self.groupid) + ".ini", "x") + f = open(str(self.groupid) + ".ini", "w") + status.write(f) def findgame(chatid) -> Game: @@ -160,6 +180,21 @@ def findgame(chatid) -> Game: return None +def loadgame(chatid) -> Game: + l = Game() + loaded = configparser.ConfigParser() + loaded.read(str(chatid) + ".ini") + # General non è un giocatore, quindi toglilo + playerlist = loaded.sections().remove("General") + for player in playerlist: + lp = Player() + lp.alive = bool(loaded[player]['alive']) + lp.username = player + lp.role = int(loaded[player]['role']) + lp.telegramid = int(loaded[player]['alive']) + partiteincorso.append(l) + + while True: t = telegram.getupdates() if 'text' in t: @@ -171,6 +206,9 @@ while True: g.adminid = t['from']['id'] partiteincorso.append(g) g.message("Partita creata!") + elif t['text'].startswith("/loadgame"): + g = loadgame(t['chat']['id']) + g.message("Partita caricata!\n_Forse._") elif t['text'].startswith("/status"): telegram.sendmessage("Nessuna partita in corso.", t['chat']['id'], t['message_id']) else: @@ -219,9 +257,9 @@ while True: p.message("Il team ROYAL ucciderà la persona più votata di ogni turno.\n" "Per votare, scrivi `/vote username`!") p.message("Scrivi in questa chat `" + str(g.groupid) + " CHAT messaggio` per mandare un" - " messaggio a tutto il tuo team.") + " messaggio a tutto il tuo team.") p.message("Scrivi in questa chat `" + str(g.groupid) + " SPECIAL nomeutente` per uccidere" - " qualcuno alla fine del giorno.") + " qualcuno alla fine del giorno.") p.message("La squadra Mifia vince se tutta la Royal Games è eliminata.") p.message("Perdi se vieni ucciso.") elif len(g.players) % 10 == 2: @@ -237,7 +275,7 @@ while True: p.message("La squadra Royal vince se tutti i Mifiosi sono morti.") p.message("La squadra Royal perde se sono vivi solo Mifiosi.") p.message("Scrivi in questa chat `" + str(g.groupid) + " SPECIAL nomeutente` per usare il tuo " - " potere di detective e indagare sul ruolo di qualcuno per un giorno.") + " potere di detective e indagare sul ruolo di qualcuno per un giorno.") else: p.role = 0 p.special = True @@ -251,10 +289,14 @@ while True: g.addplayer(p) g.message(p.username + " si è unito alla partita!") elif t['text'].startswith("/status"): + g.message(g.status()) + elif t['text'].startswith("/fullstatus"): if t['from']['id'] == g.adminid: g.adminmessage(g.fullstatus()) - else: - g.message(g.status()) + elif t['text'].startswith("/save"): + if t['from']['id'] == g.adminid: + g.save() + g.message("Partita salvata!\n_Funzione instabile, speriamo che non succedano casini..._") elif t['text'].startswith("/endday"): if t['from']['id'] == g.adminid: g.endday() From 3e5df1e0814dc5617165aefd516957e1799138e1 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sun, 10 Apr 2016 14:12:49 +0200 Subject: [PATCH 15/20] Ignora i salvataggi --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 09c7a231..df99476f 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ hearthstoneapi.txt .idea/* diario.txt lolapi.txt -save.txt \ No newline at end of file +save.txt +*.ini \ No newline at end of file From b8431864951844a2b7e255ae2889c3d437b0cadf Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sun, 10 Apr 2016 14:21:42 +0200 Subject: [PATCH 16/20] Bugfix per il caricamento --- mifia.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/mifia.py b/mifia.py index 72575ec7..dd1cbd06 100644 --- a/mifia.py +++ b/mifia.py @@ -160,7 +160,7 @@ class Game: } for player in self.players: status[player.username] = { - "telegramid": player.username, + "telegramid": player.telegramid, "role": player.role, "alive": player.alive, } @@ -185,14 +185,18 @@ def loadgame(chatid) -> Game: loaded = configparser.ConfigParser() loaded.read(str(chatid) + ".ini") # General non è un giocatore, quindi toglilo - playerlist = loaded.sections().remove("General") + playerlist = loaded.sections() + playerlist.remove("General") for player in playerlist: lp = Player() lp.alive = bool(loaded[player]['alive']) lp.username = player lp.role = int(loaded[player]['role']) - lp.telegramid = int(loaded[player]['alive']) - partiteincorso.append(l) + lp.telegramid = int(loaded[player]['telegramid']) + l.players.append(lp) + l.groupid = int(loaded['General']['groupid']) + l.adminid = int(loaded['General']['adminid']) + return l while True: @@ -208,6 +212,7 @@ while True: g.message("Partita creata!") elif t['text'].startswith("/loadgame"): g = loadgame(t['chat']['id']) + partiteincorso.append(g) g.message("Partita caricata!\n_Forse._") elif t['text'].startswith("/status"): telegram.sendmessage("Nessuna partita in corso.", t['chat']['id'], t['message_id']) @@ -275,7 +280,7 @@ while True: p.message("La squadra Royal vince se tutti i Mifiosi sono morti.") p.message("La squadra Royal perde se sono vivi solo Mifiosi.") p.message("Scrivi in questa chat `" + str(g.groupid) + " SPECIAL nomeutente` per usare il tuo " - " potere di detective e indagare sul ruolo di qualcuno per un giorno.") + " potere di detective e indagare sul ruolo di qualcuno per un giorno.") else: p.role = 0 p.special = True From 5d731c764cdb42c2ff34b22ba3d1058b7cad4a04 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Mon, 11 Apr 2016 23:12:27 +0200 Subject: [PATCH 17/20] =?UTF-8?q?Credo=20di=20non=20aver=20mai=20scritto?= =?UTF-8?q?=20codice=20pi=C3=B9=20brutto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mifia.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/mifia.py b/mifia.py index dd1cbd06..48bec5f9 100644 --- a/mifia.py +++ b/mifia.py @@ -118,7 +118,10 @@ class Game: if votelist[player] > mostvotes: mostvoted = player mostvotes = votelist[player] - return self.findusername(mostvoted) + if mostvoted is not None: + return self.findusername(mostvoted) + else: + return None def endday(self): votedout = self.mostvoted() @@ -135,6 +138,7 @@ class Game: player.votedfor = str() if player.role != 0: player.special = True + self.msg(self.displaycount()) # Controlla se la Royal Games ha vinto zero = 0 uno = 0 @@ -152,6 +156,19 @@ class Game: "I Mifiosi rimasti sono più dei Royal.") self.tokill = list() + def displaycount(self) -> str: + zero = 0 + uno = 0 + for player in self.players: + if player.alive: + if player.role == 0 or player.role == 2: + zero += 1 + elif player.role == 1: + uno += 1 + msg = "*Royal*: {0} persone rimaste" \ + "*Mifia*: {1} persone rimaste".format(str(zero), str(uno)) + return msg + def save(self): status = configparser.ConfigParser() status['General'] = { @@ -295,9 +312,11 @@ while True: g.message(p.username + " si è unito alla partita!") elif t['text'].startswith("/status"): g.message(g.status()) + g.message(g.displaycount()) elif t['text'].startswith("/fullstatus"): if t['from']['id'] == g.adminid: g.adminmessage(g.fullstatus()) + g.message(g.displaycount()) elif t['text'].startswith("/save"): if t['from']['id'] == g.adminid: g.save() From bfedff2b69a0cab7ef67816fd37c297401d72ae0 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Mon, 11 Apr 2016 23:20:14 +0200 Subject: [PATCH 18/20] Ops. --- mifia.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mifia.py b/mifia.py index 48bec5f9..8844d79d 100644 --- a/mifia.py +++ b/mifia.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import telegram import configparser +import random class Player: @@ -138,7 +139,7 @@ class Game: player.votedfor = str() if player.role != 0: player.special = True - self.msg(self.displaycount()) + self.message(self.displaycount()) # Controlla se la Royal Games ha vinto zero = 0 uno = 0 @@ -270,6 +271,7 @@ while True: # Qui crasha se non è stato impostato un username. Fare qualcosa? p.username = t['from']['username'] # Assegnazione dei ruoli + r = random.randrange(0, 100) # Spiegare meglio cosa deve fare ogni ruolo? if len(g.players) % 10 == 3: p.role = 1 @@ -279,7 +281,7 @@ while True: p.message("Il team ROYAL ucciderà la persona più votata di ogni turno.\n" "Per votare, scrivi `/vote username`!") p.message("Scrivi in questa chat `" + str(g.groupid) + " CHAT messaggio` per mandare un" - " messaggio a tutto il tuo team.") + " messaggio segreto al tuo team.") p.message("Scrivi in questa chat `" + str(g.groupid) + " SPECIAL nomeutente` per uccidere" " qualcuno alla fine del giorno.") p.message("La squadra Mifia vince se tutta la Royal Games è eliminata.") From da6b13c5eb04cd8e915e295bf58a0c6bf7ce144c Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Mon, 11 Apr 2016 23:27:40 +0200 Subject: [PATCH 19/20] Un endline fa sempre bene --- mifia.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mifia.py b/mifia.py index 8844d79d..b6ed93eb 100644 --- a/mifia.py +++ b/mifia.py @@ -166,7 +166,7 @@ class Game: zero += 1 elif player.role == 1: uno += 1 - msg = "*Royal*: {0} persone rimaste" \ + msg = "*Royal*: {0} persone rimaste\n" \ "*Mifia*: {1} persone rimaste".format(str(zero), str(uno)) return msg From bafe76ea049815d656c6462967b0ede04252c5c9 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Mon, 11 Apr 2016 23:33:16 +0200 Subject: [PATCH 20/20] Un po' di GC --- mifia.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mifia.py b/mifia.py index b6ed93eb..868324f8 100644 --- a/mifia.py +++ b/mifia.py @@ -28,6 +28,9 @@ class Game: players = list() tokill = list() + def __del__(self): + print("Partita {0} eliminata.\n".format(self.groupid)) + def message(self, text): """Manda un messaggio alla chat generale del gioco :param text: Testo del messaggio @@ -152,6 +155,7 @@ class Game: if uno == 0: self.message("*Il Team Royal ha vinto!*\n" "Tutti i Mifiosi sono stati eliminati.") + partiteincorso.remove(findgame(self.groupid)) if uno >= zero: self.message("*Il Team Mifia ha vinto!*\n" "I Mifiosi rimasti sono più dei Royal.")