Beispiel #1
0
 def __read_file(self, strInfo, strFilePath, listStore):
     locations = fileUtils.read_file(strInfo, strFilePath)
     # add rows with text
     if locations:
         for strLoc in locations.keys():
             listStore.append([strLoc , locations[strLoc][0],
                               locations[strLoc][1], locations[strLoc][2]])
     return listStore
 def __read_file(self, strInfo, strFilePath, listStore):
     locations = fileUtils.read_file(strInfo, strFilePath)
     # add rows with text
     if locations:
         for strLoc in locations.keys():
             listStore.append([
                 strLoc, locations[strLoc][0], locations[strLoc][1],
                 locations[strLoc][2]
             ])
     return listStore
 def read_markers(self):
     self.positions = fileUtils.read_file('marker', self.markerPath)
Beispiel #4
0
 def read_markers(self):
     self.positions = fileUtils.read_file('marker', self.markerPath)
Beispiel #5
0
    def read(self, file_name):
        # 変数の初期化
        shiai_list = []

        tonpu_nanpu_kbn = 9
        taku_name1 = ""
        taku_name2 = ""
        start_dt = datetime.datetime(1900, 1, 1, 0, 0, 0)
        mochiten = 0
        player_1_name = ""
        player_1_rate = 0
        player_2_name = ""
        player_2_rate = 0
        player_3_name = ""
        player_3_rate = 0
        player_4_name = ""
        player_4_rate = 0
        kyoku_list = []
        kyoku_kbn = 0
        honba_num = 0
        richibo_num = 0
        tokuten_map = {}
        fusu = 0
        han = ""
        tsumo_ron_kbn = 9
        ryukyoku_flag = False
        kyusyukyuhai_flag = False
        yaku_list = []
        dorasu = 0
        player_1_kaze = ""
        player_1_haipai = ""
        player_2_kaze = ""
        player_2_haipai = ""
        player_3_kaze = ""
        player_3_haipai = ""
        player_4_kaze = ""
        player_4_haipai = ""
        omotedora = ""
        uradora = ""
        haifu_list = []
        result_1st_player_name = ""
        result_1st_player_score = 0
        result_2nd_player_name = ""
        result_2nd_player_score = 0
        result_3rd_player_name = ""
        result_3rd_player_score = 0
        result_4th_player_name = ""
        result_4th_player_score = 0

        kyoku_start_flag = False

        # ファイル読み込み
        lines = fu.read_file(file_name)

        # 行区分
        line_kbn = 0

        # 行でループ
        for line in lines:
            words = line.split()

            if len(words) == 0:
                continue

            # 試合の開始行の場合、局リストをクリアして行区分をリセット
            if words[0] == "=====":
                line_kbn = 0
                kyoku_list.clear()

            # 局の開始行の場合、行区分をセット
            elif words[0][0] == "東" or words[0][0] == "南" or words[0][0] == "西" or words[0][0] == "北":
                line_kbn = 2

                # 2局目以降の場合、前局のモデルを生成
                if kyoku_start_flag:
                    kyoku = KyokuModel(kyoku_kbn, honba_num, richibo_num, tokuten_map, fusu, han, tsumo_ron_kbn,
                                       ryukyoku_flag, kyusyukyuhai_flag, yaku_list, dorasu, player_1_kaze,
                                       player_1_haipai, player_2_kaze, player_2_haipai, player_3_kaze, player_3_haipai,
                                       player_4_kaze, player_4_haipai, omotedora, uradora, haifu_list[:])
                    kyoku_list.append(kyoku)

                kyoku_start_flag = True
                haifu_list.clear()

            # 牌譜行の場合、行区分をセット
            elif words[0] == "*":
                line_kbn = 10

            # 試合結果行の場合、行区分をセット
            elif words[0] == "----":
                line_kbn = 11

                if kyoku_start_flag:
                    kyoku = KyokuModel(kyoku_kbn, honba_num, richibo_num, tokuten_map, fusu, han, tsumo_ron_kbn,
                                       ryukyoku_flag, kyusyukyuhai_flag, yaku_list, dorasu, player_1_kaze,
                                       player_1_haipai, player_2_kaze, player_2_haipai, player_3_kaze, player_3_haipai,
                                       player_4_kaze, player_4_haipai, omotedora, uradora, haifu_list)
                    kyoku_list.append(kyoku)

                kyoku_start_flag = False

            # 行区分で処理を分岐
            # ヘッダ行
            if line_kbn == 0:
                tonpu_nanpu_kbn, taku_name1, taku_name2, start_dt = self.parse_header(words)

            # 持ち点・プレイヤー行
            elif line_kbn == 1:
                mochiten, player_1_name, player_1_rate, player_2_name, player_2_rate, player_3_name, player_3_rate, player_4_name, player_4_rate = self.parse_players(
                    words)

            # 局の開始行
            elif line_kbn == 2:
                kyoku_kbn, honba_num, richibo_num, tokuten_map = self.parse_kyoku_header(words)

            # 局の結果行
            elif line_kbn == 3:
                fusu, han, tsumo_ron_kbn, ryukyoku_flag, kyusyukyuhai_flag, yaku_list, dorasu = self.parse_kyoku_result(words)

            # プレイヤー1の配牌行
            elif line_kbn == 4:
                player_1_kaze, player_1_haipai = self.parse_haipai(words)

            # プレイヤー2の配牌行
            elif line_kbn == 5:
                player_2_kaze, player_2_haipai = self.parse_haipai(words)

            # プレイヤー3の配牌行
            elif line_kbn == 6:
                player_3_kaze, player_3_haipai = self.parse_haipai(words)

            # プレイヤー4の配牌行
            elif line_kbn == 7:
                player_4_kaze, player_4_haipai = self.parse_haipai(words)

            # ドラ行
            elif line_kbn == 8:
                omotedora, uradora = self.parse_dora(words)

            # 牌譜行
            elif line_kbn == 10:
                haifu_list.extend(self.parse_haifu(words))

            # 試合結果(1位)行
            elif line_kbn == 12:
                result_1st_player_name, result_1st_player_score = self.parse_result(words)

            # 試合結果(2位)行
            elif line_kbn == 13:
                result_2nd_player_name, result_2nd_player_score = self.parse_result(words)

            # 試合結果(3位)行
            elif line_kbn == 14:
                result_3rd_player_name, result_3rd_player_score = self.parse_result(words)

            # 試合結果(4位)行
            elif line_kbn == 15:
                result_4th_player_name, result_4th_player_score = self.parse_result(words)

            # 試合終了行
            elif line_kbn == 16:
                end_dt = self.parse_end(words)

                # 試合モデルを生成
                shiai = ShiaiModel(tonpu_nanpu_kbn, taku_name1, taku_name2, start_dt, mochiten, player_1_name,
                                   player_1_rate, player_2_name, player_2_rate, player_3_name, player_3_rate,
                                   player_4_name, player_4_rate, kyoku_list, result_1st_player_name, result_1st_player_score,
                                   result_2nd_player_name, result_2nd_player_score, result_3rd_player_name,
                                   result_3rd_player_score, result_4th_player_name, result_4th_player_score, end_dt)
                shiai_list.append(shiai)

            line_kbn += 1

        return shiai_list