commit 0daa0254d05891d39c58b033310b05693719cefd
parent 9d035c1f0f39eb80f17a3dfc57761152946955fa
Author: Antoine Amarilli <ant.amarilli@free.fr>
Date: Fri, 20 May 2011 01:46:14 -0400
corrections blah blah
Diffstat:
snipe.py | | | 49 | +++++++++++++++++++++++++++++++------------------ |
1 file changed, 31 insertions(+), 18 deletions(-)
diff --git a/snipe.py b/snipe.py
@@ -17,16 +17,11 @@ name = "arbitre"
dump_file = "game.dmp"
help = [
- "Sur ce canal, le but est de faire dire des mots aux autres joueurs.",
- "Faire dire un mot de ta liste à quelqu'un te fait gagner des points.",
- "Dire un mot de la liste d'un autre joueur t'en fait perdre.",
- "Bien entendu, les listes sont confidentielles.",
- "Si tu es bloqué, tu peux payer "+
- fmt_score(abort_penalty)+
- " pour retirer un mot de ta liste",
- "Il suffit de me dire le mot que tu veux retirer.",
- "Pour relire ce message plus tard, il suffit de me dire \"help\"",
- "Pour avoir le classement, dis \"rank\""]
+ "Chaque joueur a une liste secrète de mots qui lui rapportent des points.",
+ "Lorsque quelqu'un les dit, il perd des points et le joueur en gagne.",
+ "Si un mot est trop dur, dis-le moi et je t'en donne un autre contre "+
+ fmt_score(abort_penalty),
+ "Commandes : \"help\", \"info\", \"rank\""]
def parse(line):
m = re.match("\[([^]]*?)\] <([^>]*?)> (.*)", line.rstrip())
@@ -149,10 +144,12 @@ if ok:
game = pickle.load(f)
f.close()
-for line in sys.stdin.readlines():
- try:
+try:
+ while True:
+ line = sys.stdin.readline()
+ if (not line):
+ break
chan, speaker, message, to_us = parse(line)
- #print(message)
if speaker not in list(game.keys()):
game[speaker] = Player(speaker)
game[speaker].welcome()
@@ -165,6 +162,8 @@ for line in sys.stdin.readlines():
game[speaker].report()
elif message == "rank":
say_to(chan, speaker, ranking(game))
+ elif message == "info":
+ game[speaker].report()
else:
if game[speaker].abort(message):
say_to(chan, speaker,
@@ -173,22 +172,36 @@ for line in sys.stdin.readlines():
game[speaker].report()
else:
say_to(chan, speaker,
- ["Ce mot ne fait pas partie de ta liste"])
+ ["Ce mot n'est pas dans ta liste. Pour de l'aide, fais " +
+ "\"help\"."])
else:
words = split(message)
+ todo = []
for word in words:
for player in game.values():
if player.name != speaker:
score = player.succeed(word)
if score > 0:
lose = int(score / 2)
- say_to(chan, speaker, ["!!! *%s*! %s gagne %s et %s perd %s." % (
+ msg = ["*** %s ! %s gagne %s et %s perd %s." % (
word, player.name, fmt_score(score), speaker,
- fmt_score(lose))])
+ fmt_score(lose))]
+ say_to(chan, speaker, msg)
+ todo.append((player.name,
+ "%s a dit \"%s\" et t'a fait gagner %s." % (speaker,
+ word, fmt_score(score))))
+ todo.append((speaker,
+ "Tu as dit \"%s\", tu as fait gagner %s à %s et tu as "
+ "perdu %s." % (word, fmt_score(score), player.name,
+ fmt_score(lose))))
game[speaker].score -= lose
+ for (player, msg) in todo:
+ game[player].private_message([msg])
+ for player in set([t[0] for t in todo]):
+ game[player].report()
- except KeyboardInterrupt:
- break
+except KeyboardInterrupt:
+ pass
f = open(dump_file, 'wb+')
pickle.dump(game, f)