Module cleanup

This commit is contained in:
Correl Roush 2014-08-27 22:14:33 -04:00
parent a1a5e38e77
commit a0f2401275
6 changed files with 23 additions and 13 deletions

View file

@ -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).

View file

@ -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}).

View file

@ -7,6 +7,7 @@
kernel, kernel,
stdlib stdlib
]}, ]},
{modules, []},
{mod, { riichi_app, []}}, {mod, { riichi_app, []}},
{env, []} {env, []}
]}. ]}.

View file

@ -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}.

View file

@ -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};
@ -37,4 +37,4 @@ terminate(_Reason, _State) ->
ok. ok.
code_change(_OldVsn, State, _Extra) -> code_change(_OldVsn, State, _Extra) ->
{ok, State}. {ok, State}.

View file

@ -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))