ffzeroHua commited on
Commit
b675536
·
verified ·
1 Parent(s): 996286d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -3
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
- e_list = [cls.parse_events(i, data[5+i*3], data[6+i*3]) for i in range(4)]
 
 
 
 
 
 
 
 
 
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] == '和了': events.append({'type': 'hora', 'actor': events[-1]['actor'], 'target': events[-1]['actor']})
 
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]: events.append({'type': 'ryukyoku', 'actor': events[-1]['actor']})
 
 
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