ゲームドロップアルゴリズム
1256 ワード
これがアルゴリズムかどうか分からないが、本人はアルゴリズムに精通していない(プログラマーの中のキックアス、お母さんの卵)
目標:自分でerlangでゲームサーバーのフレームワークを書いて、興味のある学生がいるかどうか、私信を歓迎します.
実装言語:erlang
落下ルール配表
1つのリストから、指定された数のリストが表示されます.
random_player_id_list1(PlayerIdList)-> Len = length(PlayerIdList), random:seed(now()), Random = random:uniform(Len), {L1, L2} = lists:split(Random, PlayerIdList), Len2 = length(L2), if L2 > ?ONE_PAGE_PLAYER_NUM-> lists:sublist(L2, ?ONE_PAGE_PLAYER_NUM); Len2 =:= ?ONE_PAGE_PLAYER_NUM-> L2; true-> Len2++ lists:sublist(L1, ?ONE_PAGE_PLAYER_NUM - L2) end.
目標:自分でerlangでゲームサーバーのフレームワークを書いて、興味のある学生がいるかどうか、私信を歓迎します.
実装言語:erlang
落下ルール配表
drop(DropId)->
Proto = sys_drop_ets:get_proto(DropId),
%% ItemsPro = [{100001,10}, {100002,10}, {100001,20}]
ItemsPro = sys_drop_ets:get_items_pro(Proto),
TotalPro =
lists:foldl(fun(ItemPro, Acc)->
{_, Pro} = ItemPro,
Pro + Acc
end, 0, ItemsPro),
random:seed(now()),
Random = random:uniform(TotalPro),
{Items, TPro} =
lists:foldl(fun({Item, Pro}, {TItem, TPro})->
if
TPro >= Random->
{TItem, TPro};
Pro + TPro >= Random->
{Item, Pro + TPro};
true->
{[], Pro + TPro}
end
end, {[], 0}, ItemsPro),
Items.
1つのリストから、指定された数のリストが表示されます.
random_player_id_list1(PlayerIdList)-> Len = length(PlayerIdList), random:seed(now()), Random = random:uniform(Len), {L1, L2} = lists:split(Random, PlayerIdList), Len2 = length(L2), if L2 > ?ONE_PAGE_PLAYER_NUM-> lists:sublist(L2, ?ONE_PAGE_PLAYER_NUM); Len2 =:= ?ONE_PAGE_PLAYER_NUM-> L2; true-> Len2++ lists:sublist(L1, ?ONE_PAGE_PLAYER_NUM - L2) end.