快捷搜索:

云顶娱乐棋牌游戏:简单Elixir游戏服设计

作者: 云顶娱乐棋牌游戏  发布:2019-12-04

像Player进度那样扩张TableServer代表桌子进度

充实TableSupervisor监察和控制TableServer。使用同三个Registry,因而名字也改成LocalRegistry了。

故此Registry的起步代码,以至原本PlayerServer的register_name要做多少更正。

本来你也基本上能用2个分裂的Registry,但恐怕就要追加八个RegstrySupervisor 去start_child了,

又恐怕手动运营2个(越发不提议)。

云顶娱乐棋牌游戏,新的game_server.ex

云顶娱乐棋牌游戏 1云顶娱乐棋牌游戏 2

defmodule GameServer do
  use Application
  def start(_type, _args) do
    children = [
      {Registry, keys: :unique, name: LocalRegistry},
      PlayerSupervisor,
      TableSupervisor
    ]
    Supervisor.start_link(children, strategy: :one_for_one)
  end
end

game_server.ex

PlayerServer 的register_name 应该按table_server 那样修正,那样明晰,况兼也不会冲突。

云顶娱乐棋牌游戏 3云顶娱乐棋牌游戏 4

defmodule TableServer do
    use GenServer, restart: :temporary, start: {__MODULE__, :start_link, []}

    def start_link(table) do
        GenServer.start_link(__MODULE__, table, name: register_name(table))
      end

    def init(table) do
        {:ok, table}
    end

    def register_name(%{} = table), do: register_name(table |> SimpleTable.get_id)
    def register_name(id), do: {:via, Registry, {LocalRegistry, {Table, id}}}

    def exist?(table) do
        key = {Table, table |> SimpleTable.get_id}
        case Registry.lookup(LocalRegistry, key) do
            [{_pid, _}] -> true
            [] -> false
        end
    end

end

table_server.ex

增加生产总量了exist? 推断函数,现在会有用啊。

规范化上圈套游戏的使用者创造了八个牌局后,没解散在此之前不容许再创造(当然你可以改,笔者只是简化了)

table_supervisor 测试

defmodule TableSupervisorTest do
    use ExUnit.Case
    doctest PlayerSupervisor

    setup do
        Application.stop(GameServer)
        Application.start(GameServer)
        %{}
    end

    test "测试TableSupervisor启动TableServer" do
        table1 = SimpleTable.init |> SimpleTable.set_id(1)
        table2 = SimpleTable.init |> SimpleTable.set_id(2)
        assert {:ok, _p1} = TableSupervisor.start_table(table1)
        assert {:ok, _p2} = TableSupervisor.start_table(table2)
        assert TableServer.exist?(table1)
        assert TableServer.exist?(table2)
    end
end

变动使用exist? 了

player_supervisor_test.exs 也照着改过。

编写翻译测量检验ok。

代码变迁参看git吧。

他日大家由游戏发烧友创立牌局,一步步进展吧。

XXXX,想了下 上句话不对,创立那多少个跟耍法也绝非涉及,先放着,间接起牌局玩才对。

XXXXX,上句看似也不对,本质上server进度只是转调用数据构造的操作,因而牌局耍法完全能够是数据结构的操作先。

之所以下回大家平昔操作数据,举行牌局。

 

本文由云顶娱乐棋牌游戏发布于云顶娱乐棋牌游戏,转载请注明出处:云顶娱乐棋牌游戏:简单Elixir游戏服设计

关键词:

上一篇:还是在浪费时间
下一篇:没有了