1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/client.py Thu Jun 17 23:24:41 2010 +0200
1.3 @@ -0,0 +1,64 @@
1.4 +from PySFML import sf
1.5 +import optparse
1.6 +import com
1.7 +import pickle
1.8 +import hashlib
1.9 +import SocketServer
1.10 +
1.11 +class Handler(SocketServer.BaseRequestHandler):
1.12 + """
1.13 + """
1.14 + def handle(self):
1.15 + data = self.request[0]
1.16 + socket = self.request[1]
1.17 + #print "%s wrote:" % self.client_address[0]
1.18 + #print data
1.19 + key_found = False
1.20 + cell = value = None
1.21 + for key, value in com.commands.iteritems():
1.22 + if key in data:
1.23 + key_found = True
1.24 + args = data.partition(key)[2].split()
1.25 + if args:
1.26 + cell, value = value[0](socket, self.client_address, self.worker, args)
1.27 +
1.28 + self.update(cell, value)
1.29 +
1.30 +class Client(SocketServer.UDPServer):
1.31 + def __init__(self, host, port, handler, options, server):
1.32 + SocketServer.UDPServer.__init__(self, (host, port), handler)
1.33 + self.window = sf.RenderWindow(sf.VideoMode(800, 800), "xaoc")
1.34 + self.host = host
1.35 + self.port = port
1.36 + self.handler = handler
1.37 + self.handler.update = self.update
1.38 + self.options = options
1.39 + self.server = server
1.40 + self.cells = {}
1.41 + def update(self, cell, value):
1.42 + event = sf.Event()
1.43 + while self.window.GetEvent(event):
1.44 + if event.Type == sf.Event.Closed:
1.45 + pass
1.46 + self.window.Clear()
1.47 + text = sf.String("x", sf.Font.GetDefaultFont(), 50)
1.48 + for cell in self.cells.iteritems():
1.49 + self.window.Draw(text)
1.50 + self.window.Display()
1.51 + def run(self):
1.52 + self.serve_forever()
1.53 +
1.54 +
1.55 +
1.56 +if __name__ == "__main__":
1.57 + parser = optparse.OptionParser(usage="usage: %prog [options] port server_ip server_port",
1.58 + option_list=option_list)
1.59 + options, args = parser.parse_args()
1.60 +
1.61 + if len(args) > 0:
1.62 + host = "localhost"
1.63 + port = int(args[0])
1.64 + server = (int(args[1]), int(args[2]))
1.65 + client = Client(host, port, Handler, options, server)
1.66 + client.run()
1.67 +