1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-23 19:44:20 +00:00

Finitotutto!

This commit is contained in:
Steffo 2016-04-06 21:53:36 +02:00
parent d8070b1ac2
commit ef78ac0642
2 changed files with 77 additions and 41 deletions

1
.gitignore vendored
View file

@ -8,3 +8,4 @@ hearthstoneapi.txt
.idea/* .idea/*
diario.txt diario.txt
lolapi.txt lolapi.txt
save.txt

115
mifia.py
View file

@ -1,8 +1,8 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import telegram import telegram
import pickle
import random import random
class Player: class Player:
telegramid = int() telegramid = int()
username = str() username = str()
@ -43,7 +43,7 @@ class Game:
""" """
for player in self.players: for player in self.players:
if player.role == 1: if player.role == 1:
telegram.sendmessage(text, player.telegramid) telegram.sendmessage("\U0001F608: " + text, player.telegramid)
def status(self) -> str: def status(self) -> str:
"""Restituisci lo stato attuale della partita in una stringa unicode""" """Restituisci lo stato attuale della partita in una stringa unicode"""
@ -65,18 +65,18 @@ class Game:
elif player.role == 1: elif player.role == 1:
tosend += "\U0001F608 " tosend += "\U0001F608 "
elif player.role == 2: elif player.role == 2:
tosend += "Detective " tosend += "\U0001F46E "
else: else:
tosend += "\U0001F636 " tosend += "\U0001F636 "
tosend += player.username + "\n" tosend += player.username + "\n"
return tosend return tosend
def findusername(self, username) -> Player: def findusername(self, fusername) -> Player:
"""Trova un giocatore con un certo nome utente """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: for player in self.players:
if player.username == username: if player.username == fusername:
return player return player
else: else:
return None return None
@ -101,7 +101,7 @@ class Game:
"""Trova il giocatore più votato""" """Trova il giocatore più votato"""
votelist = dict() votelist = dict()
for player in self.players: for player in self.players:
if player.votedfor != str(): if player.votedfor != str() and player.alive:
if player.votedfor not in votelist: if player.votedfor not in votelist:
votelist[player.votedfor] = 1 votelist[player.votedfor] = 1
else: else:
@ -118,33 +118,34 @@ class Game:
mostvotes = votelist[player] mostvotes = votelist[player]
return self.findusername(mostvoted) 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): def endday(self):
self.message(self.mostvoted().username + " è stato il più votato del giorno.") votedout = self.mostvoted()
self.tokill.append(self.mostvoted()) self.message(votedout.username + " è stato il più votato del giorno.")
self.tokill.append(votedout)
for killed in self.tokill: 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 killed.alive = False
for player in self.players: for player in self.players:
player.votedfor = str() player.votedfor = str()
if player.role != 0: if player.role != 0:
player.special = True player.special = True
# Controlla se la Royal Games ha vinto
zero = 0
def load(filename) -> Game: uno = 0
"""Restituisci da un file di testo con il numero del gruppo lo stato del gioco (Funzione non sicura, non importare for player in self.players:
file a caso pls) if player.alive:
:param filename: Nome del file da cui caricare lo stato""" if player.role == 0 or player.role == 2:
try: zero += 1
file = open(str(filename) + ".txt", "r") elif player.role == 1:
except OSError: uno += 1
return None if uno == 0:
else: self.message("*Il Team Royal ha vinto!*")
return pickle.load(file) if uno >= zero:
self.message("*Il Team Mifia ha vinto!*")
partiteincorso = list() partiteincorso = list()
@ -169,12 +170,10 @@ while True:
g.adminid = t['from']['id'] g.adminid = t['from']['id']
partiteincorso.append(g) partiteincorso.append(g)
g.message("Partita creata!") g.message("Partita creata!")
# elif t['text'].startswith("/load"):
# g = load(t['chat']['id'])
elif t['text'].startswith("/status"): elif t['text'].startswith("/status"):
telegram.sendmessage("Nessuna partita in corso.", t['chat']['id'], t['message_id']) telegram.sendmessage("Nessuna partita in corso.", t['chat']['id'], t['message_id'])
else: else:
xtra = t['text'].split(' ') xtra = t['text'].split(' ', 2)
try: try:
g = findgame(int(xtra[0])) g = findgame(int(xtra[0]))
except ValueError: except ValueError:
@ -186,32 +185,68 @@ while True:
if target is not None: if target is not None:
g.tokill.append(target) g.tokill.append(target)
g.findid(t['from']['id']).special = False 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: else:
if t['text'].startswith("/join"): if t['text'].startswith("/join"):
if g.joinphase: if g.joinphase and g.findid(t['from']['id']) is None:
p = Player() p = Player()
p.telegramid = t['from']['id'] p.telegramid = t['from']['id']
# Qui crasha se non è stato impostato un username. Fare qualcosa? # Qui crasha se non è stato impostato un username. Fare qualcosa?
p.username = t['from']['username'] p.username = t['from']['username']
# Assegnazione dei ruoli # Assegnazione dei ruoli
# Spiegare meglio cosa deve fare ogni ruolo? # Spiegare meglio cosa deve fare ogni ruolo?
balanced = random.randrange(0, 100, 1) if len(g.players) % 10 == 1:
if balanced <= 100:
p.role = 1 p.role = 1
p.special = True p.special = True
p.message("Sei stato assegnato alla squadra *MIFIA*.") p.message("Sei stato assegnato alla squadra *MIFIA*.")
p.message("L'ID della partita è " + str(g.groupid) + ".\n" p.message("Apparirai agli altri come un membro del team ROYAL. Depistali e non farti uccidere!")
"Non dimenticarlo. ") p.message("Il team ROYAL ucciderà la persona più votata di ogni turno.\n"
elif balanced >= 95: "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.role = 2
p.special = True p.special = True
p.message("Sei stato assegnato alla squadra *ROYAL*.") p.message("Sei stato assegnato alla squadra *ROYAL* con il ruolo di *DETECTIVE*.")
p.message("Hai il ruolo speciale 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: else:
p.role = 0 p.role = 0
p.special = True
p.message("Sei stato assegnato alla squadra *ROYAL*.") 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.addplayer(p)
g.message(p.username + " si è unito alla partita!") g.message(p.username + " si è unito alla partita!")
else: else: