コード例 #1
0
def waitTime():
    ts = Timestamp()
    sec = ts.minute() % 30 * 60 + ts.second()
    sec = 30 * 60 - sec
    m = sec / 60
    s = sec % 60

    return m, s
コード例 #2
0
def gameroom(service, mail):
    source = mail.source()
    result = {
        'CMD': 'ROOM_REP',
    }

    if mail['roomname']:
        rname = mail['roomname']
        if rname not in rooms:
            rooms[rname] = {'users': {}, 'answer': {}, 'numbers': None}

        user = address2user[mail.source()]
        if user in userSession and 'room' in userSession[user]:
            oldrname = userSession[user]['room']
            del rooms[oldrname]['users'][user]

        sys2Room(rname, u'%s 进入了聊天室' % user)
        ts = Timestamp().unixTime()
        userSession[user]['room'] = rname
        rooms[rname]['users'][user] = ts
        result['roomname'] = rname
        if rooms[rname]['numbers'] is None:
            ms = waitTime()
            result['question'] = u'**********距离题目揭晓还有 %d 分 %d 秒**********' % ms
        else:
            result['question'] = rooms[rname]['numbers'][4]

        service.send(source, errcode=0, result=result)
    else:
        result['rooms'] = rooms.keys()
        service.send(source, errcode=0, result=result)
コード例 #3
0
 def getUserInfo(service, mail):
     if mail['result'] is None:
         session = Timestamp().unixTime()
         service.send('cache', CMD='SET', key='user.' + user, value=session)
         service.send('cache',
                      CMD='SET',
                      key='user.' + user + '.online',
                      value=0)
         service.send('cache',
                      CMD='SET',
                      key='user.' + user + '.password',
                      value=password)
         service.response(source, mailSession, errcode=0, result=u'注册成功')
     else:
         service.response(source, mailSession, errcode=0, result=u'用户已存在')
コード例 #4
0
def submitAnswer(service, mail):
    if not checkInRoom(mail.source()):
        service.send(mail.source(), errcode=0, result=u'请先进入房间(ROOM)')
    else:
        user = address2user[mail.source()]
        rname = userSession[user]['room']
        if rooms[rname]['numbers'] is None:
            ms = waitTime()
            result = u'**********距离题目揭晓还有 %d 分 %d 秒**********' % ms
        else:
            if 'owner' in rooms[rname]:
                owner = rooms[rname]['owner']
                # (user, answer, value, ts)
                result = u'%s 已经在 %s 提交了最佳答案 %s(%s), 获得了本期题目冠军' % (
                    owner[0], owner[3].format(), owner[1], owner[2])
            elif user in rooms[rname]['answer']:
                answer = rooms[rname]['answer'][user][0]
                value = rooms[rname]['answer'][user][1]
                ts = rooms[rname]['answer'][user][2]
                result = u'您在 %s 已经提交过答案了, 之前的提交的答案是 %s(%d)' % (ts.format(),
                                                                answer, value)
            else:
                quest = rooms[rname]['numbers']
                answer = mail['answer']
                answer = re.sub('\s', '', answer)
                nums = re.split('\(|\)|\+|-|\*|/', answer)
                nums = filter(lambda p: len(p), nums)
                if 4 == len(nums) and nums == map(str, quest[:4]):
                    value = int(eval(answer))
                    ts = Timestamp()
                    rooms[rname]['answer'][user] = (answer, value, ts)
                    if value > 21:
                        result = u'答案提交成功, 您的计算结果是 %d(>21), 您失去了本次夺冠的机会' % value
                    else:
                        ms = waitTime()
                        if value == 21 and ms[0] == 29 and ms[1] >= 45:
                            sec = 60 - ms[1]
                            rooms[rname]['owner'] = (user, answer, value, ts)
                            result = u'OMG, %s 在 %d 秒内神速地给出了最佳答案 %s , 快收下我的膝盖吧∑(っ °Д °;)っ' % (
                                user, sec, answer)
                            sys2Room(rname, result)
                            return
                        else:
                            result = u'答案提交成功, 您的计算结果是 %d, 请耐心等待揭榜' % value
                else:
                    result = u'提交的答案不合法'

        service.send(mail.source(), errcode=0, result=result)
コード例 #5
0
    def checkPassword(last, service, mail):
        session = Timestamp().unixTime()
        if password == mail['result']:
            if user not in online:
                online[user] = {'session': session}

            service.send('cache', CMD='SET', key='user.' + user, value=session)
            result = {
                'CMD': 'LOGIN_REP',
                'user': user,
                'session': session,
                'last': last
            }
            service.response(source, mailSession, errcode=0, result=result)
        else:
            result = {'CMD': 'LOGIN_REP', 'error': u'密码错误'}

            service.response(source, mailSession, errcode=0, result=result)
コード例 #6
0
def logout(service, mail):
    def updateOnlineTime(service, mail):
        onlineTime = mail['result']
        onlineTime += time
        service.send('cache', CMD='SET', key=key, value=onlineTime)
        onlineTime = onlineTime / 1000000.0
        service.response(source,
                         mailSession,
                         errcode=0,
                         result=u'下线成功,累计在线时长 %f 秒' % onlineTime)

    source = mail.source()
    mailSession = mail.session()
    user = mail['user']
    session = mail['session']
    if user in online:
        time = (Timestamp().unixTime() - session)
        key = 'user.' + user + '.online'
        service.request('cache', callback=updateOnlineTime, CMD='GET', key=key)
    else:
        service.response(source,
                         mailSession,
                         errcode=1,
                         result=u'请登录21.game游戏大厅')
コード例 #7
0
def release(service):
    print Timestamp.now().format(), 'login service is releasing'
コード例 #8
0
def init(service):
    print Timestamp.now().format(), 'login service is initializing'
コード例 #9
0
def dispatch(service, mail):
    print '%s %s' % (Timestamp.now().format(), mail['log'])