All pastes #590465 Raw Edit

Miscellany

public text v1 · immutable
#590465 ·published 2007-06-26 16:03 UTC
rendered paste body
# -*- coding: utf-8 -*-

import sys, os
import threading
import random
import time
import socket
import pickle
import copy
from twisted.protocols import basic
from twisted.internet import reactor, protocol
HOST = '127.0.0.1'
PORT = 5314

def sauver(plant, champ, gold, temp, graine, chplant):
    valeurs = (plant, champ, gold, temp, graine, chplant)
    fic = file("save.sav", "w")
    pickle.dump(valeurs, fic)
    
def charger():
    fic = file("save.sav", "r")
    valeurs = pickle.load(fic)
    print "Partie charg�"
    return valeurs
    
class Joueur:
    def __init__(self,nom,x,y,carte):
        self.nom = nom
        self.x = x 
        self.y = y
        self.carte = carte
        return
    
    def change(self,nom,x,y,carte):
        self.nom = nom
        self.x = x 
        self.y = y
        self.carte = carte
        return



class Echo(protocol.Protocol):
    """This is just about the simplest possible protocol"""
    def connectionMade(self):
        self.transport.write("An apple a day keeps the doctor away\r\n") 
        self.transport.loseConnection()
        
    def dataReceived(self, data):
        print data
        "As soon as any data is received, write it back."
        mess = data.split('/0')
        
        if mess[0] == 'conn':
            self.nom = mess[1]
            fic = open(self.nom+".perso", "r")
            self.valeur = pickle.load(fic)
            fic.close()
            print self.valeur
            self.nom, self.password, self.x, self.y, self.carte = self.valeur
            self.t = threading.Thread(target=self.periode)#,args=())
            self.t.start()
            self.transport.write("conn/0"+self.nom+"/0"+str(self.x)+"/0"+str(self.y)+"/0"+str(self.carte))
            j = Joueur(self.nom,self.x,self.y,self.carte)
            clients.append(j)
            self.ref = j
        if mess[0] == 'touche':
            if mess[1] == 'haut':
                self.y -= 32
            if mess[1] == 'bas':
                self.y += 32
            if mess[1] == 'gauche':
                self.x -= 32
            if mess[1] == 'droite':
                self.x += 32
        self.transport.loseConnection()
        
    def periode (self):
        while 1:
            time.sleep(0.1)
            for i in clients:
                self.transport.write("coords/0"+str(i.nom)+'/0'+str(i.x)+'/0'+str(i.y)+'/0'+str(i.carte))
            self.ref.change(self.nom,self.x,self.y,self.carte)




clients = []


def main():
    """This runs the protocol on port 8000"""
    while 1:
        factory = protocol.ServerFactory()
        factory.protocol = Echo
        reactor.listenTCP(PORT,factory)
        reactor.run()
# this only runs if the module was *not* imported
if __name__ == '__main__':
    main()