Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -151,16 +151,30 @@ class TenhouParser:
|
|
| 151 |
'type': 'start_kyoku', 'bakaze': 'ESWN'[round_info[0] // 4], 'kyoku': oya + 1,
|
| 152 |
'honba': round_info[1], 'kyotaku': round_info[2], 'oya': oya,
|
| 153 |
'dora_marker': cls.tile_name(dora_markers.pop(0)), 'scores': scores,
|
|
|
|
| 154 |
'tehais': [[cls.tile_name(i) for i in patch(data[k])] for k in [4, 7, 10, 13]]
|
| 155 |
}]
|
| 156 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 157 |
events += cls.merge_events(oya, e_list, dora_markers)
|
|
|
|
| 158 |
last_type = events[-1]['type']
|
| 159 |
-
if last_type == 'tsumo' and result_info[0] == '和了':
|
|
|
|
| 160 |
elif result_info[0] == '和了':
|
| 161 |
actor = next(i for i, x in enumerate(result_info[1]) if x > 0)
|
| 162 |
events.append({'type': 'hora', 'actor': actor, 'target': actor})
|
| 163 |
-
elif last_type == 'tsumo' or '九牌' in result_info[0]:
|
|
|
|
|
|
|
| 164 |
return events
|
| 165 |
|
| 166 |
@classmethod
|
|
|
|
| 151 |
'type': 'start_kyoku', 'bakaze': 'ESWN'[round_info[0] // 4], 'kyoku': oya + 1,
|
| 152 |
'honba': round_info[1], 'kyotaku': round_info[2], 'oya': oya,
|
| 153 |
'dora_marker': cls.tile_name(dora_markers.pop(0)), 'scores': scores,
|
| 154 |
+
# 这里的 data[13] 在三麻时虽然是结果数据,但 patch() 会把它变成 13 个 '?'
|
| 155 |
'tehais': [[cls.tile_name(i) for i in patch(data[k])] for k in [4, 7, 10, 13]]
|
| 156 |
}]
|
| 157 |
+
|
| 158 |
+
# 还原原版的做法:分别解析,只在四麻时解析第四个玩家
|
| 159 |
+
e1 = cls.parse_events(0, data[5], data[6])
|
| 160 |
+
e2 = cls.parse_events(1, data[8], data[9])
|
| 161 |
+
e3 = cls.parse_events(2, data[11], data[12])
|
| 162 |
+
e4 = ([], [])
|
| 163 |
+
if len(data) >= 15:
|
| 164 |
+
e4 = cls.parse_events(3, data[14], data[15])
|
| 165 |
+
|
| 166 |
+
e_list = [e1, e2, e3, e4]
|
| 167 |
events += cls.merge_events(oya, e_list, dora_markers)
|
| 168 |
+
|
| 169 |
last_type = events[-1]['type']
|
| 170 |
+
if last_type == 'tsumo' and result_info[0] == '和了':
|
| 171 |
+
events.append({'type': 'hora', 'actor': events[-1]['actor'], 'target': events[-1]['actor']})
|
| 172 |
elif result_info[0] == '和了':
|
| 173 |
actor = next(i for i, x in enumerate(result_info[1]) if x > 0)
|
| 174 |
events.append({'type': 'hora', 'actor': actor, 'target': actor})
|
| 175 |
+
elif last_type == 'tsumo' or '九牌' in result_info[0]:
|
| 176 |
+
events.append({'type': 'ryukyoku', 'actor': events[-1]['actor']})
|
| 177 |
+
|
| 178 |
return events
|
| 179 |
|
| 180 |
@classmethod
|