首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

求python开发的网页游戏.小弟我要去玩玩.顺便问一下下面的代码的有关问题

2012-05-02 
求python开发的网页游戏.我要去玩玩.顺便问一下下面的代码的问题1.求python开发的网页游戏.我要去玩玩2.顺

求python开发的网页游戏.我要去玩玩.顺便问一下下面的代码的问题
1.求python开发的网页游戏.我要去玩玩

2.顺便问一下下面的代码的问题

主要是下午不知道是电脑不行还是这论坛不行.不能以代码的形式发.
现在可以发了.
我再把代码发一下.


现在总是执行在: def unknown(self, session, cmd): 这一句就不行了?

Python code
from asyncore import dispatcherfrom asynchat import async_chatimport socket, asyncorePORT = 5005NAME = 'TestChat'class EndSession(Exception): passclass CommandHandler:        """        类似于标准库中的cmd.Cmd的简单命令处理程序        """      def unknown(self, session, cmd):           '响应未知命令'           session.push('Unknown command: %s\r\n' % cmd)      def handle(self, session, line):           '处理从给定的会话中收到的行'           if not line.strip():return           #分离命令           parts = line.split('',1)           cmd = parts[0]           try: line = parts[0].strip()           except IndexError: line = ''           #试着查找处理程序           meth = getattr(self, 'do'+cmd.None)           try:               #假定它是可以调用的               meth(session, line)            except TypeError:                #如果不可以调用,此代码响应不知的命令                self.unknown(session, cmd)    class Room(CommandHandler):        """        包括一个或多个用户的fa型环境,它负责基本的命令处理或广播        """        def __init__(self, server):            self.server = server            self.sessions = []        def add(self, session):            '一个会话(用户)进入房间'            self.sessions.append(session)        def remove(self, session):            '一个会话(用户)已离开房间'            self.sessions.remove(session)        def broadcast(self, line):            '向房间中的所有会话发送一行'            for session in self.sessions                session.push(line)        def do_logout(self, session, liine):            '响应logout命令'            raise EndSession    class LoginRoom(Room):        """       为刚刚链接上的用户准备房间        """        def add(self, session):            Room.add(self, session)            #当用户进入时,问候他或她:            self.broadcast('Welcome to %s\r\n' % self.server.name)        def unknown(self, session, cmd):            # 所有未知命令(除了login或者logout外的一切)            #会导至一个警告:            session.push('Please log in\nUse "login <nick>"\r\n')        def do_login(self, session, line):            name = line.strip()            #确保用户输入了名字            if not name:                session.push('please enter a name\r\n')            #确保用户名没有被使用                elif name in self.server.users:                    session.push('The name "%s" is taken.\r\n' % name)                    session.push('Please try again.\r\n')                    else:                        #名字没有问题,所以存储在会话中,并且将用户移动到主聊天室                        session.name = name                        session.enter(self.server.main_room)    class ChatRoom(Room):        """        为多用户聊天准备的房间        """        def add(self, session):            #告诉所有人有新用户进入了房间            self.broadcast(session.name + 'has entered the room.\r\n'):            self.server.users[session.name] = session            Room.add(self, session)        def remove(self, session):            Room.remove(self, session)            #告诉所有人有用户离开            self.broadcast(session.name + 'has left the room.\r\n')        def do_say(self, session, line):            self.broadcast(session.name + ': ' + line+'\r\n')        def do_look(self, session, line):            '处理look命令.该命令用于查看谁在房间内'            session.push('The following are in this room:\r\n')            for other in self.sessions:                session.push(other.name + '\r\n')        def do_who(self, session, line):            '处理who命令,该命令用于查看谁登陆了'            session.push('The following are logged in "\r\n')            for name in self.server.users:                session.push(name + '\r\n')    class LogoutRoom(Room):        """        为单用户准备的简单房间,只用于将用户名从服务器移除        """        def add(self, session):            #当会话(用户)进入要删除的LogoutRoom时            try: del self.server.users[session.name]            except KeyError: pass    class ChatSession(async_chat):        """        单会话,负责与用户通信.        """        def __init__(self, server,sock):            async_chat.__init__(self, sock)            self.server = server            self.set_terminator("\r\n")            self.data = []            self.name = None            #所有的会话都开始于单独的LoginRoom中.            self.enter(LoginRoom(server))        def enter(self, room):            #从当前房间中移除自身(self),并将自身添加到下一个房间            try: cur = self.room            except AttributeError: pass            else: cur.remove(self)            self.room = room            room.add(self)        def collect_incoming_data(self, data):            self.data.append(data)        def found_terminator(self):            line = ''.join(self.data)            self.data = []            try: self.room.handle(self, line)            except EndSession:                self.handle_close()        def handle_close(self):            async_chat.handle_close(self)            self.enter(LoginRoom(self.server))    class ChatServer(dispatcher):        """       只有一个房间的聊天服务器        """        def __init__(self, port, name):            dispatcher.__init__(self)            self.create_socket(socket.AF_INET, socket.SOCK_STREAM)            self.set_reuse_addr()            self.bind(('', port))            self.listen(5)            self.name = name            self.users = {}            self.main_room = ChatRoom(self)        def handle_accept(self):            conn, addr = self.accept()            ChatSession(self, conn)    if __name__ = '__main__':        s = ChatServer(PORT, NAME)        try: asyncore.loop()        except KeyboardInterrupt: print 



[解决办法]
LZ把注释用的单引号改了再把报错信息发出来看看吧
[解决办法]
LZ想看到什么反应呢?
这个只是启动一个聊天室的基本服务哦,可以自己看看机器的5005端口

[解决办法]
The code is interesting

热点排行