mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-12-17 23:24:20 +00:00
Finitotutto!
This commit is contained in:
parent
d8070b1ac2
commit
ef78ac0642
2 changed files with 77 additions and 41 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -7,4 +7,5 @@ hearthstoneapi.txt
|
||||||
*.pyc
|
*.pyc
|
||||||
.idea/*
|
.idea/*
|
||||||
diario.txt
|
diario.txt
|
||||||
lolapi.txt
|
lolapi.txt
|
||||||
|
save.txt
|
115
mifia.py
115
mifia.py
|
@ -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:
|
||||||
|
|
Loading…
Reference in a new issue