从erlang'检索/返回游戏状态;s消息传递结构
我在看一些用erlang制作的游戏,发现了一个简单的井字游戏。我理解这个游戏,但我有一个简单的问题,这个人用从erlang'检索/返回游戏状态;s消息传递结构,erlang,Erlang,我在看一些用erlang制作的游戏,发现了一个简单的井字游戏。我理解这个游戏,但我有一个简单的问题,这个人用io:format()来显示游戏状态。所以当我做出这样的举动时 gameclient:make_move(Player1, ChallengedPlayer, Message), 我得到的回报是 {make_move,"player1",a3} 但是我想知道如何在调用函数make_move/3时检索当前游戏状态 我认为在这里使用记忆不是一个好的选择 有人能提出一种方法来检索/返回游戏状
io:format()
来显示游戏状态。所以当我做出这样的举动时
gameclient:make_move(Player1, ChallengedPlayer, Message),
我得到的回报是
{make_move,"player1",a3}
但是我想知道如何在调用函数make_move/3
时检索当前游戏状态
我认为在这里使用记忆不是一个好的选择
有人能提出一种方法来检索/返回游戏状态,而不是仅仅使用io:format打印它吗 例如,您可以使用ETS表
ets:new(tik_tak_tab, [public, {read_concurrency, true}, ordered_set,named_table]).
loop(Name) ->
receive
{ msg, Message } ->
ets:insert(tik_tak_tab, {state, Message}),
loop(Name)
end.
some_func() ->
case ets:lookup(tik_tak_tab, state) of
[{state, Message}] -> Message;
_ -> error
end.
ets:new(tik_tak_tab, [public, {read_concurrency, true}, ordered_set,named_table]).
loop(Name) ->
receive
{ msg, Message } ->
ets:insert(tik_tak_tab, {state, Message}),
loop(Name)
end.
some_func() ->
case ets:lookup(tik_tak_tab, state) of
[{state, Message}] -> Message;
_ -> error
end.
ets:new(tik_tak_tab, [public, {read_concurrency, true}, ordered_set,named_table]).
loop(Name) ->
receive
{ msg, Message } ->
ets:insert(tik_tak_tab, {state, Message}),
loop(Name)
end.
some_func() ->
case ets:lookup(tik_tak_tab, state) of
[{state, Message}] -> Message;
_ -> error
end.
您可以查看详细信息,例如,您可以使用ETS表格
ets:new(tik_tak_tab, [public, {read_concurrency, true}, ordered_set,named_table]).
loop(Name) ->
receive
{ msg, Message } ->
ets:insert(tik_tak_tab, {state, Message}),
loop(Name)
end.
some_func() ->
case ets:lookup(tik_tak_tab, state) of
[{state, Message}] -> Message;
_ -> error
end.
ets:new(tik_tak_tab, [public, {read_concurrency, true}, ordered_set,named_table]).
loop(Name) ->
receive
{ msg, Message } ->
ets:insert(tik_tak_tab, {state, Message}),
loop(Name)
end.
some_func() ->
case ets:lookup(tik_tak_tab, state) of
[{state, Message}] -> Message;
_ -> error
end.
ets:new(tik_tak_tab, [public, {read_concurrency, true}, ordered_set,named_table]).
loop(Name) ->
receive
{ msg, Message } ->
ets:insert(tik_tak_tab, {state, Message}),
loop(Name)
end.
some_func() ->
case ets:lookup(tik_tak_tab, state) of
[{state, Message}] -> Message;
_ -> error
end.
您可以查看详细信息很抱歉回复太晚,但这将打印名为的游戏状态。没关系,但我想要的是在每次调用make_move函数时将NewGameState的值放入一个变量中。我实际上是在ejabberd服务器上运行这个游戏,我做的是在每次调用时将新游戏状态存储在mnesia表中,然后我读取它,然后在下一行中,我从mnesia表中读取新游戏状态,但我发现它是空的,但当我编写计时器时:sleep(200)在这两行之间,我发现mnesia表中填充了游戏状态。很抱歉,回复太晚,但这将打印名为的游戏状态。没关系,但我想要的是在每次调用make_move函数时将NewGameState的值放入一个变量中。我实际上是在ejabberd服务器上运行这个游戏,我做的是在每次调用时将新游戏状态存储在mnesia表中,然后我读取它,然后在下一行中,我从mnesia表中读取新游戏状态,但我发现它是空的,但当我编写计时器时:sleep(200)在这两行之间,我发现记忆表中充满了游戏状态。