Asesino JSL2007

   1 #!/usr/bin/python
   2 """
   3 Programa para la asignación de parejas y envio de respectivos correos para el juego ASESINO
   4 Desarrollado inicialmente por Manuel Cerón, modificado por Sebastián Ortiz y liberado bajo licencia WTFPLv2.
   5 
   6      DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
   7                     Version 2, December 2004
   8 
   9  Copyright (C) 2004 Sam Hocevar
  10   22 rue de Plaisance, 75014 Paris, France
  11  Everyone is permitted to copy and distribute verbatim or modified
  12  copies of this license document, and changing it is allowed as long
  13  as the name is changed.
  14 
  15             DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
  16    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  17 
  18   0. You just DO WHAT THE FUCK YOU WANT TO.
  19 
  20 """
  21 import random
  22 import sys
  23 import os
  24 import smtplib
  25 
  26 def mail(smtp='',sender='', to='', subject='', text='', user='', passwd=''):
  27 
  28     headers = "From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n" % (sender, to, subject)
  29     message = headers + text
  30     mailServer = smtplib.SMTP()
  31     mailServer.connect(smtp, 25)
  32     mailServer.set_debuglevel(0)
  33     mailServer.login(user,passwd)
  34     mailServer.sendmail(sender, to, message)
  35     mailServer.quit()
  36 
  37 def prompt(prompt):
  38     return raw_input(prompt).strip()
  39 """
  40 La estructura del archivo es la siguiente:
  41 Nombre Apellido correos@dominio.com
  42 Otro Jugador    otrocorreo@none.com
  43 """
  44 nombreArchivo = prompt('Nombre del archivo: ')
  45 archivo = open(nombreArchivo)
  46 asesinos = [n.split("\t")[0].strip() for n in archivo]
  47 archivo.seek(0)
  48 correos = {}
  49 parejas = {}
  50 tmp=0
  51 for linea in archivo:
  52         nombre = linea.split("\t")[0].strip()
  53         correos[nombre] = linea.split("\t")[1].strip()
  54         tmp=tmp+1
  55 
  56 #print correos
  57 random.shuffle(asesinos)
  58 for i in range(0,tmp):
  59         ase = asesinos[i]
  60         if i == tmp-1:
  61                 i=-1
  62         vic = asesinos[i+1]
  63         parejas[ase]= vic
  64 
  65 servidor = prompt('Servidor SMTP:')
  66 envia = 'mision@asesinoJSL2007.net.co'
  67 asunto = 'Su mision en Asesino JSL2007'
  68 usuariosmtp = prompt ('Usuario SMTP: ')
  69 passwdsmtp = prompt ('Password del SMTP: ')
  70 correoJuez = prompt ('Correo del Juez: ')
  71 mensaje = 'Si "asesina" a su objetivo, él o ella debe decirte el suyo, que entonces se convierte en tu siguiente meta. Cuando alguien es asesinado esa persona no debe mentir al revelar el nombre de la siguiente víctima. Si hay problemas, debe ir donde el árbitro (Offray, osea Yo).\n\nAl final, el que tenga el numero mayor de muertos gana.\n\nEl proceso de  asesinamiento está regido por las siguientes normas:\n\n\t* Debes tocar a tu objetivo con una media (limpia) en la parte  superior del cuerpo. La media debe estar en tus manos en el momento del contacto.\n\t* Ningún otro participan del juego puede presenciar este acto. Eso no quiere decir que no se puedar hacer en público, sino que se debe hacer "sin dejar evidencia". Si alguien lo hace y lo anuncia(o confirma la queja de la víctima) tu mision ha fallado y debes esperar 2 horas antes de poder intentarlo de nuevo(pero ahora tu objetivo sabe de quién es debe cuidarse). Las otras reglas todavía se aplican como antes, lo que significa que todavía debes atrapar a tu objetivo a solas luego de estas 24 horas así que es mejor que seas cuidadoso.\n\t* No se te permite atacar en el cuarto de la persona o en su casa\n\t* Los baños están fuera del limite\n\t* Nunca le digas a nadie acerca del juego mientras está sucediendo. Bueno, esta es una recomendacion, no una regla.Después de todo esto no es el Club de la Pelea.\n\nLas reglas completas se encuentran en http://www.el-directorio.org/JSL/Asesino'
  72 listaAsesinos = ''
  73 numEnvios = 0
  74 for i in parejas:
  75         asignacion = 'Agente: %s\n\n Su misión es asesinar a %s, un importante cabecilla del movimiento del software libre Colombiano.\n\n' %(i ,parejas[i])
  76         msgFinal = asignacion + mensaje
  77         mail(servidor,envia,correos[i],asunto,msgFinal,usuariosmtp, passwdsmtp)
  78         listaAsesinos = listaAsesinos + i + ' tiene que matar a ' + parejas[i] + '\n'
  79         numEnvios = numEnvios + 1
  80 
  81 mail(servidor,envia,correoJuez,'Listado de Asesinos',listaAsesinos,usuariosmtp, passwdsmtp)
  82 print 'Se han enviado ', numEnvios, ' correos'
  83 print 'Have a lot of Fun!'

Python/Code/Asesino (last edited 2010-09-20 20:38:44 by Kmilo)