示例#1
0
 def list_cards(self, loc):
     ls = self.get_from(int(loc))
     for i in range(0, len(ls)):
         if ls[i] is not None:
             color_print('[{}]{}'.format(
                 color(i, EColor.EMPHASIS),
                 _card_detail(self.visual_cards[ls[i]])))
    def interrupt_input(self, msg, color):
        color_print(msg, color, True)

        in_hint = '>>> '
        if len(self.status) > 0:
            in_hint = '({}) >>> '.format('、'.join(self.status))
        print(in_hint, end='')
        sys.stdout.flush()
示例#3
0
    def enter(self):
        color_print('正在寻找合适的对手...使用exit退出匹配', EColor.EMPHASIS)
        self.enter_status('匹配中')
        self.cmd_set['r'] = (self.refresh, '刷新。')
        self.cmd_set['exit'] = (self.exit, '退出匹配并返回卡组编辑页面。')

        t = Thread(target=self.__wait)
        t.start()

        super().enter()
 def list_all_cards(self):
     j = list_cards()
     col = EColor.DEFAULT_COLOR
     for c in j:
         if c['rank'] == ECardRank.COMMON:
             col = EColor.COMMON_CARD
         elif c['rank'] == ECardRank.GOOD:
             col = EColor.GOOD_CARD
         elif c['rank'] == ECardRank.TRUMP:
             col = EColor.TRUMP_CARD
         color_print('{}({})'.format(color(c['name'], col), c['limit']))
 def spectate(self, pn):
     from stages.stage_pvp import StagePVP
     from stages.stage_game import StageGame
     # try:
     res = spectate(pn)
     color_print('正在进入观战...', EColor.EMPHASIS)
     cmd = res.split('|')[:-1]
     cmd[0] = cmd[0][1:]
     self.next_stage = StageGame(self.status, [
         json.loads(x.replace('\\\"', '\"').replace('\\\\', '\\'))
         for x in cmd
     ])
 def remove(self, *card_name):
     card_name = ' '.join(card_name)
     if self.deck_index is not None:
         self.__remove(card_name)
     elif self.rdk_editing:
         if self.rdk_rm_time < 2:
             self.rdk_rm_time += 1
         else:
             color_print('至多可以对随机卡组修改2次orz', EColor.ERROR)
             return
         self.__remove(card_name)
     else:
         color_print('当前没有在编辑任何卡组orz', EColor.ERROR)
 def __remove(self, card_name):
     c = card_detail(card_name)
     cid = str(c['card_id'])
     if cid in self.temp_deck:
         self.edit_stack.append(
             (deck_remove_card, c['card_id'], self.side_editing))
         if self.temp_deck[cid][0] > 1:
             self.temp_deck[cid][0] -= 1
         else:
             self.temp_deck.pop(cid)
         self.__show_deck(self.temp_deck)
     else:
         color_print('{}不存在于当前卡组orz'.format(card_name), EColor.ERROR)
 def save(self):
     d = None
     if self.deck_index is not None:
         for e in self.edit_stack:
             d = e[0](e[1], self.deck_index, e[2])
     elif self.rdk_editing:
         for e in self.edit_stack:
             d = e[0](e[1], None, 0)
     else:
         color_print('当前没有在编辑任何卡组orz', EColor.ERROR)
         return
     self.edit_stack = list()
     if d is not None:
         self.__update_deck(d)
     else:
         self.__show_deck(self.temp_deck)
 def add(self, *card_name):
     card_name = ' '.join(card_name)
     if self.deck_index is not None:
         f = self.__add_card(card_name)
         self.__show_deck(self.temp_deck)
         return f
     elif self.rdk_editing:
         if self.rdk_a_time < 2:
             self.rdk_a_time += 1
             f = self.__add_card(card_name)
             self.__show_deck(self.temp_deck)
             return f
         color_print('至多可以对随机卡组修改2次orz', EColor.ERROR)
     else:
         color_print('当前没有在编辑任何卡组orz', EColor.ERROR)
     return False
 def fill(self, *card_name):
     card_name = ' '.join(card_name)
     if self.deck_index is not None:
         while self.__add_card(card_name):
             pass
         self.__show_deck(self.temp_deck)
     elif self.rdk_editing:
         f = False
         while self.__add_card(card_name):
             f = True
             if self.rdk_a_time <= 2:
                 self.rdk_a_time += 1
             pass
         self.__show_deck(self.temp_deck)
         if not f:
             color_print('至多可以对随机卡组修改2次orz', EColor.ERROR)
     else:
         color_print('当前没有在编辑任何卡组orz', EColor.ERROR)
    def enter(self):
        color_print('\n----卡组编辑页面----')
        self.cmd_set['-l'] = (self.list_all_cards, '列出所有卡。')
        self.cmd_set['-ld'] = (self.list_decks, '列出所有已保存的卡组。')
        self.cmd_set['-d'] = (detail, '(-d 卡片名)显示指定卡的详细信息。')

        self.cmd_set['rdk'] = (self.random_deck, '获得今日的随机卡组并开始编辑。(每天至多获取 1 个)')
        self.cmd_set['new'] = (self.new, '(new 新卡组名)添加新的卡组并开始编辑。')
        self.cmd_set['op'] = (self.deck_open, '(op 已有卡组名)打开指定卡组并开始编辑。')
        self.cmd_set['a'] = (self.add, '(a 卡片名)添加 1 张指定的卡到当前' '卡组并显示修改后的卡组。')
        self.cmd_set['fi'] = (self.fill, '(fi 卡片名)尽可能地添加指定地卡到当前'
                              '卡组并显示修改后的卡组。')
        self.cmd_set['rm'] = (self.remove, '(rm 卡片名)移除当前卡组中 1 张指定'
                              '卡并显示修改后的卡组。')
        self.cmd_set['rmd'] = (self.remove_deck, '删除当前卡组。')
        self.cmd_set['-m'] = (self.edit_main_deck, '切换至主卡组编辑。')
        self.cmd_set['-s'] = (self.edit_side_deck, '切换至副卡组编辑。')
        self.cmd_set['s'] = (self.save, '保存对当前卡组的修改。')
        self.cmd_set['p'] = (self.play, '使用当前卡组与随机对手进行一场\"公平交易\"!')
        self.cmd_set['sp'] = (self.spectate, '(sp 玩家昵称)观战指定的玩家')
        self.cmd_set['pwd'] = (self.play_with_secret_code,
                               '(pwd 4位数字)使用暗号进行一场私下的\"公平交易\"……(3局2胜)')
        super().enter()
 def play(self):
     from stages.stage_pvp import StagePVP
     from stages.stage_game import StageGame
     color_print('发送请求中...如果您在此停留了2秒以上说明您已匹配成功但由于不明原因无法收到信息。')
     # try:
     res = pvp(self.deck_index, -1)
     color_print('请求返回')
     if res == '0':
         self.next_stage = StagePVP(self.deck_index, -1, self.status)
     else:
         color_print('检测到正处于对局,正在重新连接...', EColor.EMPHASIS)
         # 断线重连
         cmd = res.split('|')[:-1]
         cmd[0] = cmd[0][1:]
         self.next_stage = StageGame(self.status, [
             json.loads(x.replace('\\\"', '\"').replace('\\\\', '\\'))
             for x in cmd
         ])
 def __show_deck(deck: dict):
     return
     color_print('主卡组: ', EColor.EMPHASIS)
     cl = [list(), list(), list(), list(), list(), list()]
     col = [
         EColor.TRUMP_CARD, EColor.GOOD_CARD, EColor.COMMON_CARD,
         EColor.TRUMP_CARD, EColor.GOOD_CARD, EColor.COMMON_CARD
     ]
     for cid in deck.keys():
         rk = deck[cid][1]
         side = deck[cid][3]
         cl[ECardRank.TRUMP - rk + side * 3].append(cid)
     for i in range(0, 6):
         if i == 3:
             color_print('副卡组: ', EColor.EMPHASIS)
         for cid in cl[i]:
             color_print('{}: {}'.format(color(deck[cid][2], col[i]),
                                         deck[cid][0]))
示例#14
0
 def enter():
     from stages.stage_deck_edit import StageDeckEdit
     color_print('欢迎使用公平交易PVP原型版!操作小提示:\n'
                 '1、输入-h指令以获得帮助。')  # '2、在输入卡名时,用\"-\"替换掉卡名中的空格。')
     while True:
         user_name = input("请输入用户名:")
         if os.path.exists('password.ini'):
             with open('password.ini') as f:
                 pwd = f.read()
         else:
             pwd = getpass.getpass('输入密码:(完成后回车)')
         if login(user_name, pwd):
             color_print('{},欢迎您的到来!'.format(
                 color(user_name, EColor.PLAYER_NAME)))
             break
         else:
             color_print('用户名或密码错误orz', EColor.ERROR)
     stm = StageDeckEdit()
     stm.enter()
def detail(*args):
    col = EColor.DEFAULT_COLOR
    card_name = ' '
    card_name = card_name.join(args)
    c = card_detail(card_name)
    if c['rank'] == ECardRank.COMMON:
        col = EColor.COMMON_CARD
    elif c['rank'] == ECardRank.GOOD:
        col = EColor.GOOD_CARD
    elif c['rank'] == ECardRank.TRUMP:
        col = EColor.TRUMP_CARD
    if DEBUG:
        color_print('{} {}'.format(color(c['name'], col), c['card_id']))
    else:
        color_print('{}'.format(color(c['name'], col)))
    subtype = ''
    sts = list()
    if c['type'] == ECardType.EMPLOYEE:
        for st in employee_type.keys():
            if st & int(c['subtype']):
                sts.append(employee_type[st])
        subtype = '|'.join(sts)
    elif c['type'] == ECardType.STRATEGY:
        for st in strategy_type.keys():
            if st & int(c['subtype']):
                sts.append(strategy_type[st])
        subtype = '|'.join(sts)
    color_print('{} {}'.format(card_type[int(c['type'])], subtype))
    ss = ''
    if len(c['series']) > 0:
        ss = str(c['series'])
    if c['type'] == ECardType.EMPLOYEE:
        color_print('ATK {} DEF {} {}'.format(color(c['atk_eff'], EColor.ATK),
                                              color(c['def_hp'], EColor.DEF),
                                              ss))
    elif c['type'] == ECardType.STRATEGY:
        color_print('EFF {} {}'.format(color(c['atk_eff'], EColor.DEF), ss))
    color_print('效果: {}'.format(c['effect']))
 def list_decks(self):
     for dn in list_deck():
         color_print(dn)
示例#17
0
 def vid(self, v):
     v = int(v)
     if v in self.visual_cards:
         color_print(_card_detail(self.visual_cards[v]))
     else:
         color_print('不存在记录。', EColor.ERROR)
 def print_help(self):
     for cmd in self.cmd_set.keys():
         color_print('{}: {}'.format(color(cmd, EColor.EMPHASIS),
                                     self.cmd_set[cmd][1]))
 def enter(self):
     color_print('\n----主页面----')
     self.cmd_set['edit'] = (self.call_deck_editor, '跳转至卡组编辑页面。')
     super().enter()
 def default_cmd(self, cmd):
     color_print('指令不存在。', EColor.ERROR)
 def remove_deck(self):
     try:
         remove_deck(self.deck_index)
     except Exception as ex:
         color_print('指定的卡组不存在orz', EColor.ERROR)
示例#22
0
 def default_cmd(self, cmd):
     if self.running:
         color_print('聊天消息已发送~')
         chat(cmd)