Skip to content
This repository was archived by the owner on Jul 8, 2023. It is now read-only.

Commit 4b201bd

Browse files
committed
Migrate to mahjong library with 1.0.3 version
1 parent 33c9046 commit 4b201bd

File tree

7 files changed

+18
-11
lines changed

7 files changed

+18
-11
lines changed

project/game/ai/discard.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# -*- coding: utf-8 -*-
22
from mahjong.constants import AKA_DORA_LIST
33
from mahjong.tile import TilesConverter
4-
from mahjong.utils import is_honor, simplify, plus_dora
4+
from mahjong.utils import is_honor, simplify, plus_dora, is_aka_dora
55

66

77
class DiscardOption(object):
@@ -87,9 +87,10 @@ def calculate_value(self, shanten=None):
8787
simplified_tile = simplify(self.tile_to_discard)
8888
value += suit_tile_grades[simplified_tile]
8989

90-
count_of_dora = plus_dora(self.tile_to_discard * 4,
91-
self.player.table.dora_indicators,
92-
self.player.table.has_aka_dora)
90+
count_of_dora = plus_dora(self.tile_to_discard * 4, self.player.table.dora_indicators)
91+
if is_aka_dora(self.tile_to_discard * 4, self.player.table.has_open_tanyao):
92+
count_of_dora += 1
93+
9394
value += 50 * count_of_dora
9495

9596
if is_honor(self.tile_to_discard):

project/game/ai/first_version/defence/enemy_analyzer.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from mahjong.tile import TilesConverter
2-
from mahjong.utils import plus_dora, count_tiles_by_suits
2+
from mahjong.utils import plus_dora, count_tiles_by_suits, is_aka_dora
33

44

55
class EnemyAnalyzer(object):
@@ -61,6 +61,8 @@ def is_threatening(self):
6161
meld_tiles_34 = TilesConverter.to_34_array(meld_tiles)
6262
if meld_tiles:
6363
dora_count = sum([plus_dora(x, self.table.dora_indicators) for x in meld_tiles])
64+
# aka dora
65+
dora_count += sum([1 for x in meld_tiles if is_aka_dora(x, self.table.has_open_tanyao)])
6466
# enemy has a lot of dora tiles in his opened sets
6567
# so better to fold against him
6668
if dora_count >= 3:

project/game/ai/first_version/defence/main.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from mahjong.tile import TilesConverter
2-
from mahjong.utils import plus_dora, is_honor
2+
from mahjong.utils import plus_dora, is_honor, is_aka_dora
33

44
from game.ai.first_version.defence.defence import DefenceTile
55
from game.ai.first_version.defence.enemy_analyzer import EnemyAnalyzer
@@ -60,7 +60,9 @@ def should_go_to_defence_mode(self, discard_candidate=None):
6060

6161
if shanten == 1:
6262
# TODO calculate all possible hand costs for 1-2 shanten
63-
dora_count = sum([plus_dora(x, self.table.dora_indicators, self.table.has_aka_dora) for x in self.player.tiles])
63+
dora_count = sum([plus_dora(x, self.table.dora_indicators) for x in self.player.tiles])
64+
# aka dora
65+
dora_count += sum([1 for x in self.player.tiles if is_aka_dora(x, self.table.has_open_tanyao)])
6466
# we had 3+ dora in our almost done hand,
6567
# we can try to push it
6668
if dora_count >= 3:

project/game/ai/first_version/defence/suji.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# -*- coding: utf-8 -*-
2-
from mahjong.utils import is_man, simplify, is_pin, is_sou, plus_dora
2+
from mahjong.utils import is_man, simplify, is_pin, is_sou, plus_dora, is_aka_dora
33

44
from game.ai.first_version.defence.defence import Defence, DefenceTile
55

@@ -108,7 +108,7 @@ def _suji_tiles(self, suji):
108108

109109
# mark dora tiles as dangerous tiles to discard
110110
for tile in result:
111-
if plus_dora(tile.value * 4, self.table.dora_indicators, False):
111+
if plus_dora(tile.value * 4, self.table.dora_indicators) or is_aka_dora(tile.value * 4, self.table.has_open_tanyao):
112112
tile.danger += 100
113113

114114
return result

project/game/table.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ def add_dora_indicator(self, tile):
114114
self._add_revealed_tile(tile)
115115

116116
def is_dora(self, tile):
117-
return plus_dora(tile, self.dora_indicators) or is_aka_dora(tile)
117+
return plus_dora(tile, self.dora_indicators) or is_aka_dora(tile, self.has_open_tanyao)
118118

119119
def set_players_scores(self, scores, uma=None):
120120
for i in range(0, len(scores)):

project/game/tests/tests_table.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,8 @@ def test_is_dora(self):
156156
table.dora_indicators = [self._string_to_136_tile(pin='1')]
157157
self.assertFalse(table.is_dora(self._string_to_136_tile(sou='2')))
158158

159+
table.has_open_tanyao = True
160+
159161
# red five man
160162
self.assertTrue(table.is_dora(FIVE_RED_MAN))
161163

project/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
mahjong==1.0.2
1+
mahjong==1.0.3
22
requests==2.18.4

0 commit comments

Comments
 (0)