def do_release(self):
     # 判定是否是取消,是取消则不翻转当前选手
     if self._cursor_loc['x'] == self._checked_loc[
             'x'] and self._cursor_loc['y'] == self._checked_loc['y']:
         self._checked = ~self._checked
         self._pieces[self._cursor_loc['y']][self._cursor_loc['x']].set_pic(
             self.cursor_pic())
         self.clear_map()
         self.show_map()
         return
     if self.can_release():
         self._checked = ~self._checked
         # 判断游戏是否结束
         if self._cursor_original_backup.get_camp(
         ) != constants.CAMP_NONE and self._cursor_original_backup.get_type(
         ) == constants.CHESS_BOSS:
             self.game_over = True
             self.winner = self.firster
         # 切换释放棋子后的布局
         self._cursor_original_backup = self._pieces[
             self._checked_loc['y']][self._checked_loc['x']]
         tmp = ChessPiece(self.PIECE_NONE, constants.CAMP_NONE)
         tmp.set_type(constants.CHESS_PIECE)
         self._pieces[self._checked_loc['y']][self._checked_loc['x']] = tmp
         self._pieces[self._cursor_loc['y']][self._cursor_loc['x']].set_pic(
             self.cursor_pic())
         self.clear_map()
         self.show_map()
         # 切换选手
         self.reverse_role()
 def cursor_move(self, p_target):
     self._pieces[self._cursor_loc['y']][
         self._cursor_loc['x']] = self._cursor_original_backup
     self._cursor_original_backup = self._pieces[p_target['y']][
         p_target['x']]
     tmp = ChessPiece(self.cursor_pic(), constants.CAMP_CURSOR)
     tmp.set_type(constants.CHESS_CURSOR)
     self._pieces[p_target['y']][p_target['x']] = tmp
     self._cursor_loc = p_target
     # 刷新地图
     self.clear_map()
     self.show_map()
    def __init__(self, camp=constants.CAMP_RED):
        if camp == constants.CAMP_WHITE:
            self._cursor_loc['y'] = 8
        elif camp != constants.CAMP_RED:
            print('阵营参数错误,游戏退出')
            exit()
        self.firster = camp
        # init pieces
        # init NONE Camp
        for y in range(self._height):
            line = []
            for x in range(self._width):
                tmp = ChessPiece(self.PIECE_NONE, constants.CAMP_NONE)
                tmp.set_type(constants.CHESS_PIECE)
                line.append(tmp)
            self._pieces.append(line)
        del line
        # init RED Camp and Pic
        for idx in range(self._width):
            self._pieces[0][idx].set_camp(constants.CAMP_RED)
        self._pieces[0][0].set_pic(' 車 ')
        self._pieces[0][0].set_type(constants.CHESS_CHE)
        self._pieces[0][1].set_pic(' 馬 ')
        self._pieces[0][1].set_type(constants.CHESS_MA)
        self._pieces[0][2].set_pic(' 象 ')
        self._pieces[0][2].set_type(constants.CHESS_XIANG)
        self._pieces[0][3].set_pic(' 士 ')
        self._pieces[0][3].set_type(constants.CHESS_SHI)
        self._pieces[0][4].set_pic(' 將 ')
        self._pieces[0][4].set_type(constants.CHESS_BOSS)
        self._pieces[0][5].set_pic(' 士 ')
        self._pieces[0][5].set_type(constants.CHESS_SHI)
        self._pieces[0][6].set_pic(' 象 ')
        self._pieces[0][6].set_type(constants.CHESS_XIANG)
        self._pieces[0][7].set_pic(' 馬 ')
        self._pieces[0][7].set_type(constants.CHESS_MA)
        self._pieces[0][8].set_pic(' 車 ')
        self._pieces[0][8].set_type(constants.CHESS_CHE)
        # 上面的camp已经通过循环统一设置过了
        self._pieces[2][1].set_pic(' 炮 ')
        self._pieces[2][1].set_type(constants.CHESS_PAO)
        self._pieces[2][1].set_camp(constants.CAMP_RED)
        self._pieces[2][7].set_pic(' 炮 ')
        self._pieces[2][7].set_type(constants.CHESS_PAO)
        self._pieces[2][7].set_camp(constants.CAMP_RED)
        self._pieces[3][0].set_pic(' 卒 ')
        self._pieces[3][0].set_type(constants.CHESS_BING)
        self._pieces[3][0].set_camp(constants.CAMP_RED)
        self._pieces[3][2].set_pic(' 卒 ')
        self._pieces[3][2].set_type(constants.CHESS_BING)
        self._pieces[3][2].set_camp(constants.CAMP_RED)
        self._pieces[3][4].set_pic(' 卒 ')
        self._pieces[3][4].set_type(constants.CHESS_BING)
        self._pieces[3][4].set_camp(constants.CAMP_RED)
        self._pieces[3][6].set_pic(' 卒 ')
        self._pieces[3][6].set_type(constants.CHESS_BING)
        self._pieces[3][6].set_camp(constants.CAMP_RED)
        self._pieces[3][-1].set_pic(' 卒 ')
        self._pieces[3][-1].set_type(constants.CHESS_BING)
        self._pieces[3][-1].set_camp(constants.CAMP_RED)

        # init WHITE Camp and Pic
        for idx in range(self._width):
            self._pieces[-1][idx].set_camp(constants.CAMP_WHITE)
        self._pieces[-1][0].set_pic(' 車 ')
        self._pieces[-1][0].set_type(constants.CHESS_CHE)
        self._pieces[-1][1].set_pic(' 馬 ')
        self._pieces[-1][1].set_type(constants.CHESS_MA)
        self._pieces[-1][2].set_pic(' 相 ')
        self._pieces[-1][2].set_type(constants.CHESS_XIANG)
        self._pieces[-1][3].set_pic(' 仕 ')
        self._pieces[-1][3].set_type(constants.CHESS_SHI)
        self._pieces[-1][4].set_pic(' 帥 ')
        self._pieces[-1][4].set_type(constants.CHESS_BOSS)
        self._pieces[-1][5].set_pic(' 仕 ')
        self._pieces[-1][5].set_type(constants.CHESS_SHI)
        self._pieces[-1][6].set_pic(' 相 ')
        self._pieces[-1][6].set_type(constants.CHESS_XIANG)
        self._pieces[-1][7].set_pic(' 馬 ')
        self._pieces[-1][7].set_type(constants.CHESS_MA)
        self._pieces[-1][8].set_pic(' 車 ')
        self._pieces[-1][8].set_type(constants.CHESS_CHE)
        # 上面的camp已经通过循环统一设置过了
        self._pieces[-3][1].set_pic(' 砲 ')
        self._pieces[-3][1].set_type(constants.CHESS_PAO)
        self._pieces[-3][1].set_camp(constants.CAMP_WHITE)
        self._pieces[-3][7].set_pic(' 砲 ')
        self._pieces[-3][7].set_type(constants.CHESS_PAO)
        self._pieces[-3][7].set_camp(constants.CAMP_WHITE)
        self._pieces[-4][0].set_pic(' 兵 ')
        self._pieces[-4][0].set_type(constants.CHESS_BING)
        self._pieces[-4][0].set_camp(constants.CAMP_WHITE)
        self._pieces[-4][2].set_pic(' 兵 ')
        self._pieces[-4][2].set_type(constants.CHESS_BING)
        self._pieces[-4][2].set_camp(constants.CAMP_WHITE)
        self._pieces[-4][4].set_pic(' 兵 ')
        self._pieces[-4][4].set_type(constants.CHESS_BING)
        self._pieces[-4][4].set_camp(constants.CAMP_WHITE)
        self._pieces[-4][6].set_pic(' 兵 ')
        self._pieces[-4][6].set_type(constants.CHESS_BING)
        self._pieces[-4][6].set_camp(constants.CAMP_WHITE)
        self._pieces[-4][8].set_pic(' 兵 ')
        self._pieces[-4][8].set_type(constants.CHESS_BING)
        self._pieces[-4][8].set_camp(constants.CAMP_WHITE)

        # init cursor 〄 〠
        self._cursor_original_backup: ChessPiece = self._pieces[
            self._cursor_loc['y']][self._cursor_loc['x']]
        tmp = ChessPiece(self.cursor_pic(), constants.CAMP_CURSOR)
        tmp.set_type(constants.CHESS_CURSOR)
        self._pieces[self._cursor_loc['y']][self._cursor_loc['x']] = tmp
        del tmp

        self.strategies = chess_strategy.ChessStrategy(self._pieces, True)