mirror of
https://github.com/correl/riichi.git
synced 2024-11-23 19:19:55 +00:00
Ryuu Iisou
This commit is contained in:
parent
92e44606dc
commit
72b0b4be81
2 changed files with 17 additions and 1 deletions
10
src/yaku.erl
10
src/yaku.erl
|
@ -12,7 +12,8 @@
|
||||||
tanyao/2,
|
tanyao/2,
|
||||||
pinfu/2,
|
pinfu/2,
|
||||||
chiitoitsu/2,
|
chiitoitsu/2,
|
||||||
kokushi_musou/2]).
|
kokushi_musou/2,
|
||||||
|
ryuu_iisou/2]).
|
||||||
|
|
||||||
%% @doc Counts the pons/kans of value tiles in a player's hand.
|
%% @doc Counts the pons/kans of value tiles in a player's hand.
|
||||||
%% Value tiles include all of the dragons, plus the round wind and the player's seat wind.
|
%% Value tiles include all of the dragons, plus the round wind and the player's seat wind.
|
||||||
|
@ -84,3 +85,10 @@ kokushi_musou(#game{}, #player{hand=#hand{tiles=Tiles, melds=[#meld{type=pair, t
|
||||||
andalso sets:size(sets:from_list([T|Tiles])) =:= 13;
|
andalso sets:size(sets:from_list([T|Tiles])) =:= 13;
|
||||||
kokushi_musou(#game{}, #player{}) ->
|
kokushi_musou(#game{}, #player{}) ->
|
||||||
false.
|
false.
|
||||||
|
|
||||||
|
%% @doc Returns true for an all-green hand.
|
||||||
|
-spec ryuu_iisou(game(), player()) -> boolean().
|
||||||
|
ryuu_iisou(#game{}, #player{hand=Hand}) ->
|
||||||
|
Greens = sets:from_list([#tile{suit=sou, value=V} || V <- [2,3,4,6,8]] ++ [#tile{suit=dragon, value=green}]),
|
||||||
|
Tiles = sets:from_list(riichi_hand:tiles(Hand)),
|
||||||
|
sets:is_subset(Tiles, Greens).
|
||||||
|
|
|
@ -44,3 +44,11 @@ kokushi_musou_test() ->
|
||||||
Hand = #hand{tiles=?TERMINALS ++ ?HONOURS -- [#tile{suit=pin, value=1}],
|
Hand = #hand{tiles=?TERMINALS ++ ?HONOURS -- [#tile{suit=pin, value=1}],
|
||||||
melds=[#meld{type=pair, tiles=lists:duplicate(2, #tile{suit=pin, value=1})}]},
|
melds=[#meld{type=pair, tiles=lists:duplicate(2, #tile{suit=pin, value=1})}]},
|
||||||
?assertEqual(true, yaku:kokushi_musou(#game{}, #player{hand=Hand})).
|
?assertEqual(true, yaku:kokushi_musou(#game{}, #player{hand=Hand})).
|
||||||
|
|
||||||
|
ryuu_iisou_test() ->
|
||||||
|
Hand = #hand{melds=[#meld{type=chii, tiles=[#tile{suit=sou, value=V} || V <- [2,3,4]]},
|
||||||
|
#meld{type=chii, tiles=[#tile{suit=sou, value=V} || V <- [2,3,4]]},
|
||||||
|
#meld{type=pon, tiles=lists:duplicate(3, #tile{suit=sou, value=6})},
|
||||||
|
#meld{type=pon, tiles=lists:duplicate(3, #tile{suit=sou, value=8})},
|
||||||
|
#meld{type=pair, tiles=lists:duplicate(2, #tile{suit=dragon, value=green})}]},
|
||||||
|
?assert(yaku:ryuu_iisou(#game{}, #player{hand=Hand})).
|
||||||
|
|
Loading…
Reference in a new issue