Прикреплённый файл «xonet.py»
Загрузка 1 #!/usr/bin/env python
2 # coding: utf
3 '''
4 Сервер крестиков-ноликов
5 '''
6 import asyncore
7 import socket
8 import xoproto
9 import xoai
10
11 class XOHandler(asyncore.dispatcher_with_send):
12 def __init__(self, *args, **argn):
13 self.proto = xoproto.Proto()
14 self.solver = None
15 asyncore.dispatcher_with_send.__init__(self, *args, **argn)
16
17 def handle_read(self):
18 data = self.recv(8192)
19 if data:
20 if data.upper().startswith("GEN"):
21 ret = self.proto.command("INFO")
22 if ret.startswith("GAME"):
23 s = ret.split()
24 self.solver = xoai.Solver(int(s[1]),int(s[2]))
25 self.solver.generate()
26 ret = "OK"
27 elif data.upper().startswith("AI"):
28 if self.solver:
29 board = self.proto.command("INFO").split()[4]
30 cmd = self.solver.next(board)
31 ret = self.proto.command(cmd)
32 else:
33 ret = "ERROR NEEDGEN"
34 else:
35 ret = self.proto.command(data)
36 self.send(ret+"\n")
37
38 class XOServer(asyncore.dispatcher):
39 def __init__(self, host, port):
40 asyncore.dispatcher.__init__(self)
41 self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
42 self.set_reuse_addr()
43 self.bind((host, port))
44 self.listen(0)
45
46 def handle_accept(self):
47 pair = self.accept()
48 if pair is None:
49 pass
50 else:
51 sock, addr = pair
52 print 'Incoming connection from %s' % repr(addr)
53 handler = XOHandler(sock)
54
55 server = XOServer('',2014)
56 asyncore.loop()
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2014-04-18 15:19:22, 3.0 KB) [[attachment:xoai.py]]
- [получить | показать] (2014-04-18 15:19:33, 1.7 KB) [[attachment:xonet.py]]
- [получить | показать] (2014-04-18 15:19:10, 5.0 KB) [[attachment:xoproto.py]]
Вам нельзя прикреплять файлы к этой странице.