mirror of
https://github.com/correl/riichi.git
synced 2024-11-23 19:19:55 +00:00
Module cleanup
This commit is contained in:
parent
f53f8059c5
commit
4d90a04f76
6 changed files with 23 additions and 13 deletions
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
-module(game).
|
-module(game).
|
||||||
|
|
||||||
-include("riichi.hrl").
|
-include("../include/riichi.hrl").
|
||||||
|
|
||||||
-export([new/0,
|
-export([new/0,
|
||||||
new/1,
|
new/1,
|
||||||
|
@ -31,10 +31,10 @@ new() ->
|
||||||
new(Players) ->
|
new(Players) ->
|
||||||
lists:foldl(fun add_player/2, new(), Players).
|
lists:foldl(fun add_player/2, new(), Players).
|
||||||
|
|
||||||
add_player(_Player, Game = #game{players=Players})
|
add_player(_Player, #game{players=Players})
|
||||||
when length(Players) >= 4 ->
|
when length(Players) >= 4 ->
|
||||||
throw("Game full");
|
throw("Game full");
|
||||||
add_player(Name, Game = #game{players = Players})
|
add_player(Name, Game = #game{})
|
||||||
when is_list(Name) ->
|
when is_list(Name) ->
|
||||||
add_player(#player{name=Name}, Game);
|
add_player(#player{name=Name}, Game);
|
||||||
add_player(Player = #player{}, Game = #game{players=Players}) ->
|
add_player(Player = #player{}, Game = #game{players=Players}) ->
|
||||||
|
@ -70,7 +70,7 @@ draw(#game{turn = Turn} = Game) ->
|
||||||
Updated = update_player(Game, Turn, Player),
|
Updated = update_player(Game, Turn, Player),
|
||||||
Updated#game{wall=Wall}.
|
Updated#game{wall=Wall}.
|
||||||
|
|
||||||
get_player(#game{players = Players} = Game, Seat) ->
|
get_player(#game{players = Players}, Seat) ->
|
||||||
Pos = position(Seat) + 1,
|
Pos = position(Seat) + 1,
|
||||||
lists:nth(Pos, Players).
|
lists:nth(Pos, Players).
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,11 @@
|
||||||
-module(game_tree).
|
-module(game_tree).
|
||||||
|
|
||||||
-include("riichi.hrl").
|
-include("../include/riichi.hrl").
|
||||||
-include("lazy.hrl").
|
-include("../include/lazy.hrl").
|
||||||
|
|
||||||
-export([build/1,
|
-export([build/1,
|
||||||
do/2]).
|
do/2]).
|
||||||
|
|
||||||
-compile([export_all]).
|
|
||||||
|
|
||||||
-record(game_tree, {game, actions}).
|
-record(game_tree, {game, actions}).
|
||||||
-record(game_action, {player, action, arguments}).
|
-record(game_action, {player, action, arguments}).
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
kernel,
|
kernel,
|
||||||
stdlib
|
stdlib
|
||||||
]},
|
]},
|
||||||
|
{modules, []},
|
||||||
{mod, { riichi_app, []}},
|
{mod, { riichi_app, []}},
|
||||||
{env, []}
|
{env, []}
|
||||||
]}.
|
]}.
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
-export([waiting/3,
|
-export([waiting/3,
|
||||||
playing/2,
|
playing/2,
|
||||||
turn/2]).
|
turn/2]).
|
||||||
-export([init/1, handle_event/3, handle_sync_event/4, handle_info/3, terminate/3]).
|
-export([init/1, handle_event/3, handle_sync_event/4, handle_info/3, terminate/3, code_change/4]).
|
||||||
|
|
||||||
-include("../include/riichi.hrl").
|
-include("../include/riichi.hrl").
|
||||||
|
|
||||||
|
@ -68,3 +68,6 @@ terminate(Reason, StateName, _State) ->
|
||||||
{from_state, StateName},
|
{from_state, StateName},
|
||||||
{reason, Reason}]),
|
{reason, Reason}]),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
|
code_change(_OldVsn, StateName, State, _Extra) ->
|
||||||
|
{ok, StateName, State}.
|
||||||
|
|
|
@ -22,7 +22,7 @@ handle_call(get_players, _From, State) ->
|
||||||
handle_call(_Msg, _From, State) ->
|
handle_call(_Msg, _From, State) ->
|
||||||
{noreply, State}.
|
{noreply, State}.
|
||||||
|
|
||||||
handle_cast({send, {message, From, Body}=Message}, State) ->
|
handle_cast({send, {message, _From, _Body}=Message}, State) ->
|
||||||
Players = State#state.players,
|
Players = State#state.players,
|
||||||
[gen_server:cast(Pid, Message) || Pid <- Players],
|
[gen_server:cast(Pid, Message) || Pid <- Players],
|
||||||
{noreply, State};
|
{noreply, State};
|
||||||
|
|
12
src/yaku.erl
12
src/yaku.erl
|
@ -28,7 +28,15 @@
|
||||||
chinitsu/2,
|
chinitsu/2,
|
||||||
kokushi_musou/2,
|
kokushi_musou/2,
|
||||||
ryuu_iisou/2,
|
ryuu_iisou/2,
|
||||||
dai_san_gen/2]).
|
dai_san_gen/2,
|
||||||
|
suu_an_kou/2,
|
||||||
|
tsu_iisou/2,
|
||||||
|
chinrouto/2,
|
||||||
|
shou_suushi/2,
|
||||||
|
dai_suushi/2,
|
||||||
|
chuuren_pooto/2,
|
||||||
|
suu_kan_tsu/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.
|
||||||
|
@ -117,7 +125,7 @@ chanta(#game{}, #player{hand=#hand{tiles=[], melds=Melds}}) ->
|
||||||
-spec itsuu(game(), player()) -> boolean().
|
-spec itsuu(game(), player()) -> boolean().
|
||||||
itsuu(#game{}, #player{hand=#hand{tiles=[], melds=Melds}}) ->
|
itsuu(#game{}, #player{hand=#hand{tiles=[], melds=Melds}}) ->
|
||||||
Tiles = lists:flatten([TS || #meld{type=chii, tiles=TS} <- Melds]),
|
Tiles = lists:flatten([TS || #meld{type=chii, tiles=TS} <- Melds]),
|
||||||
Runs = [lists:filter(fun(#tile{suit=S, value=V}) -> S =:= Suit end, Tiles)
|
Runs = [lists:filter(fun(#tile{suit=S}) -> S =:= Suit end, Tiles)
|
||||||
|| Suit <- [man,sou,pin]],
|
|| Suit <- [man,sou,pin]],
|
||||||
lists:any(fun(TS) ->
|
lists:any(fun(TS) ->
|
||||||
sets:from_list([V || #tile{value=V} <- TS]) =:= sets:from_list(lists:seq(1,9))
|
sets:from_list([V || #tile{value=V} <- TS]) =:= sets:from_list(lists:seq(1,9))
|
||||||
|
|
Loading…
Reference in a new issue