Прикреплённый файл «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 из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.