瀏覽代碼

ft: 调整

master
SisMaker 1 月之前
父節點
當前提交
2b1f252229
共有 4 個檔案被更改,包括 38 行新增27 行删除
  1. +21
    -11
      .gitignore
  2. +2
    -2
      src/ai_player.erl
  3. +14
    -13
      src/game_core.erl
  4. +1
    -1
      src/game_manager.erl

+ 21
- 11
.gitignore 查看文件

@ -1,19 +1,29 @@
.rebar3
_*
.eunit
*.o
*.beam
*.plt
*.swp
*.swo
.erlang.cookie
ebin
log
erl_crash.dump
.concrete/DEV_MODE
# rebar 2.x
.rebar
logs
_build
rel/example_project
ebin/*
deps
# rebar 3
.rebar3
_build/
_checkouts/
rebar.lock
# idea
.idea
*.iml
rebar3.crashdump
*~
cmake-build*
CMakeLists.txt
# nif compile temp file
*.pdb
*.d
compile_commands.json

+ 2
- 2
src/ai_player.erl 查看文件

@ -2,7 +2,7 @@
-behaviour(gen_server).
-export([start_link/1, init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).
-export([create_ai_player/1, play_turn/1, init/1]).
-export([create_ai_player/1, play_turn/1, new/1]).
-record(state, {
name,
@ -32,7 +32,7 @@ play_turn(AiPid) ->
gen_server:cast(AiPid, play_turn).
%% AI玩家
init(Type) ->
new(Type) ->
Name = generate_ai_name(),
{ok, Pid} = start_link(Name),
Difficulty = case Type of

+ 14
- 13
src/game_core.erl 查看文件

@ -1,5 +1,5 @@
-module(game_core).
-export([start_game/3, play_cards/3, get_game_state/1, is_valid_play/2]).
-export([start_game/3, init_game_state/0, play_cards/3, get_game_state/1, is_valid_play/2]).
-export([init_deck/0, deal_cards/1, get_card_type/1, compare_cards/2]).
-record(game_state, {
@ -23,9 +23,9 @@ init_deck() ->
deal_cards(Deck) ->
{Players, Landlord} = lists:split(51, Deck),
{lists:sublist(Players, 1, 17),
lists:sublist(Players, 18, 17),
lists:sublist(Players, 35, 17),
Landlord}.
lists:sublist(Players, 18, 17),
lists:sublist(Players, 35, 17),
Landlord}.
%%
start_game(Player1, Player2, Player3) ->
@ -55,7 +55,7 @@ validate_play(GameState, PlayerPid, Cards) ->
case get_player_cards(GameState, PlayerPid) of
{ok, PlayerCards} ->
has_cards(PlayerCards, Cards) andalso
is_valid_play(Cards, GameState#game_state.last_play);
is_valid_play(Cards, GameState#game_state.last_play);
_ ->
false
end.
@ -104,8 +104,9 @@ analyze_complex_pattern(Cards) ->
get_game_state(GameId) ->
%
{ok, #game_state{}}.
%%
init_game_state() ->
%%
init_game_state() ->
%
#game_state{
players = [],
@ -126,7 +127,7 @@ is_valid_play(Cards, LastPlay) ->
{ok, Type1, Value1} = get_card_type(Cards),
{ok, Type2, Value2} = get_card_type(LastCards),
(Type1 =:= Type2 andalso Value1 > Value2) orelse
(Type1 =:= bomb andalso Type2 =/= bomb)
(Type1 =:= bomb andalso Type2 =/= bomb)
end.
%%
@ -153,9 +154,9 @@ assign_roles(PlayerCards, LandlordIdx) ->
lists:map(
fun({Idx, {Pid, Cards}}) ->
Role = case Idx of
LandlordIdx -> landlord;
_ -> farmer
end,
LandlordIdx -> landlord;
_ -> farmer
end,
{Pid, Cards, Role}
end,
lists:zip(lists:seq(1, length(PlayerCards)), PlayerCards)
@ -167,7 +168,7 @@ update_game_state(GameState, PlayerPid, Cards) ->
UpdatedPlayers = lists:map(
fun({Pid, PlayerCards, Role}) when Pid =:= PlayerPid ->
{Pid, PlayerCards -- Cards, Role};
(Player) -> Player
(Player) -> Player
end,
GameState#game_state.players
),
@ -287,7 +288,7 @@ is_straight(Cards) ->
Values = [card_value(Card) || Card <- Cards],
SortedValues = lists:sort(Values),
length(SortedValues) >= 5 andalso
lists:max(SortedValues) =< 14 andalso % A以下的牌才能组成顺子
lists:max(SortedValues) =< 14 andalso % A以下的牌才能组成顺子
SortedValues =:= lists:seq(hd(SortedValues), lists:last(SortedValues)).
%%

+ 1
- 1
src/game_manager.erl 查看文件

@ -73,7 +73,7 @@ end_game(GameManagerState) ->
%% AI玩家
initialize_ai_players() ->
% AI玩家
BasicAI = ai_player:init(basic),
BasicAI = ai_player:new(basic),
AdvancedAI = advanced_ai_player:init(advanced),
% AI玩家列表

Loading…
取消
儲存