From ae38a8bee3340181b442af80515b9eab5c2f0bec Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sun, 10 Apr 2016 14:04:04 +0200 Subject: [PATCH] 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()