Coverage for project/game/ai/defence/yaku_analyzer/yakuhai.py : 100%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1from game.ai.defence.yaku_analyzer.yaku_analyzer import YakuAnalyzer
4class YakuhaiAnalyzer(YakuAnalyzer):
5 id = "yakuhai"
7 def __init__(self, enemy):
8 self.enemy = enemy
10 def serialize(self):
11 return {"id": self.id}
13 def is_yaku_active(self):
14 return len(self._get_suitable_melds()) > 0
16 def melds_han(self):
17 han = 0
18 suitable_melds = self._get_suitable_melds()
19 for x in suitable_melds:
20 tile_34 = x.tiles[0] // 4
21 # we need to do that to support double winds yakuhais
22 han += len([x for x in self.enemy.valued_honors if x == tile_34])
23 return han
25 def _get_suitable_melds(self):
26 suitable_melds = []
27 for x in self.enemy.melds:
28 tile_34 = x.tiles[0] // 4
29 if tile_34 in self.enemy.valued_honors:
30 suitable_melds.append(x)
31 return suitable_melds