从erlang的消息传递构造中检索/返回游戏状态

时间:2017-08-04 08:34:26

标签: erlang

我正在看一些使用erlang制作的游戏,我发现了一个简单的井字游戏here。我理解这个游戏,但我有一个简单的问题,即该人使用io:format()来显示游戏状态。所以当我像

一样移动时
gameclient:make_move(Player1, ChallengedPlayer, Message),

我获得的回报是

{make_move,"player1",a3}

但我想知道如何在调用函数make_move/3时检索当前的游戏状态。

我不认为在这里使用mnesia是一个不错的选择。

任何人都可以建议一种检索/返回游戏状态的方法,而不仅仅是使用io:format打印它。

1 个答案:

答案 0 :(得分:0)

您可以使用ETS表作为示例

  1. 在启动时创建表格

    ets:new(tik_tak_tab, [public, {read_concurrency, true}, ordered_set,named_table]).
    
  2. 将数据存储到表中:

    loop(Name) ->
      receive
        { msg, Message } ->
            ets:insert(tik_tak_tab, {state, Message}),
            loop(Name)  
      end.
    
  3. 制作新功能以检索状态:

    some_func() ->
      case ets:lookup(tik_tak_tab, state) of
        [{state, Message}] -> Message;
        _ -> error
      end.
    
  4. _。 还有便宜的方式来使用记录

    您可以查看详细的here