diff --git a/douzero/env/move_detector.py b/douzero/env/move_detector.py index c61e2b7..93be207 100644 --- a/douzero/env/move_detector.py +++ b/douzero/env/move_detector.py @@ -24,8 +24,8 @@ def get_move_type(move): if move_size == 2: if move[0] == move[1]: return {'type': TYPE_2_PAIR, 'rank': move[0]} - elif move == [20, 30]: # Kings - return {'type': TYPE_5_KING_BOMB} + # elif move == [20, 30]: # Kings + # return {'type': TYPE_5_KING_BOMB} else: return {'type': TYPE_15_WRONG} @@ -39,8 +39,10 @@ def get_move_type(move): if len(move_dict) == 1: return {'type': TYPE_4_BOMB, 'rank': move[0]} elif len(move_dict) == 2: - if move[0] == move[1] == move[2] or move[1] == move[2] == move[3]: - return {'type': TYPE_6_3_1, 'rank': move[1]} + if move[0] == 20 and move[2] == 30: # Kings + return {'type': TYPE_5_KING_BOMB} + # if move[0] == move[1] == move[2] or move[1] == move[2] == move[3]: + # return {'type': TYPE_6_3_1, 'rank': move[1]} else: return {'type': TYPE_15_WRONG} else: @@ -50,7 +52,9 @@ def get_move_type(move): return {'type': TYPE_8_SERIAL_SINGLE, 'rank': move[0], 'len': len(move)} if move_size == 5: - if len(move_dict) == 2: + if len(move_dict) == 1: + return {'type': TYPE_4_BOMB5, 'rank': move[0]} + elif len(move_dict) == 2: return {'type': TYPE_7_3_2, 'rank': move[2]} else: return {'type': TYPE_15_WRONG} @@ -60,13 +64,21 @@ def get_move_type(move): count_dict[n] += 1 if move_size == 6: - if (len(move_dict) == 2 or len(move_dict) == 3) and count_dict.get(4) == 1 and \ - (count_dict.get(2) == 1 or count_dict.get(1) == 2): - return {'type': TYPE_13_4_2, 'rank': move[2]} + if len(move_dict) == 1: + return {'type': TYPE_4_BOMB6, 'rank': move[0]} + # if (len(move_dict) == 2 or len(move_dict) == 3) and count_dict.get(4) == 1 and \ + # (count_dict.get(2) == 1 or count_dict.get(1) == 2): + # return {'type': TYPE_13_4_2, 'rank': move[2]} - if move_size == 8 and (((len(move_dict) == 3 or len(move_dict) == 2) and - (count_dict.get(4) == 1 and count_dict.get(2) == 2)) or count_dict.get(4) == 2): - return {'type': TYPE_14_4_22, 'rank': max([c for c, n in move_dict.items() if n == 4])} + # if move_size == 8 and (((len(move_dict) == 3 or len(move_dict) == 2) and + # (count_dict.get(4) == 1 and count_dict.get(2) == 2)) or count_dict.get(4) == 2): + # return {'type': TYPE_14_4_22, 'rank': max([c for c, n in move_dict.items() if n == 4])} + + if move_size == 7 and len(move_dict) == 1: + return {'type': TYPE_4_BOMB7, 'rank': move[0]} + + if move_size == 8 and len(move_dict) == 1: + return {'type': TYPE_4_BOMB8, 'rank': move[0]} mdkeys = sorted(move_dict.keys()) if len(move_dict) == count_dict.get(2) and is_continuous_seq(mdkeys): @@ -93,15 +105,15 @@ def get_move_type(move): serial_3.sort() if is_continuous_seq(serial_3): - if len(serial_3) == len(single)+len(pair)*2: - return {'type': TYPE_11_SERIAL_3_1, 'rank': serial_3[0], 'len': len(serial_3)} + # if len(serial_3) == len(single)+len(pair)*2: + # return {'type': TYPE_11_SERIAL_3_1, 'rank': serial_3[0], 'len': len(serial_3)} if len(serial_3) == len(pair) and len(move_dict) == len(serial_3) * 2: return {'type': TYPE_12_SERIAL_3_2, 'rank': serial_3[0], 'len': len(serial_3)} - if len(serial_3) == 4: - if is_continuous_seq(serial_3[1:]): - return {'type': TYPE_11_SERIAL_3_1, 'rank': serial_3[1], 'len': len(serial_3) - 1} - if is_continuous_seq(serial_3[:-1]): - return {'type': TYPE_11_SERIAL_3_1, 'rank': serial_3[0], 'len': len(serial_3) - 1} + # if len(serial_3) == 4: + # if is_continuous_seq(serial_3[1:]): + # return {'type': TYPE_11_SERIAL_3_1, 'rank': serial_3[1], 'len': len(serial_3) - 1} + # if is_continuous_seq(serial_3[:-1]): + # return {'type': TYPE_11_SERIAL_3_1, 'rank': serial_3[0], 'len': len(serial_3) - 1} return {'type': TYPE_15_WRONG}