2 プレイヤーのターンベースのゲームを処理するために、Erlang で単純なフレームワークを開発しています。コードは次のとおりです。
-module(game).
-export([start_server/0,generate_server/0,add_player/0,remove_player/0]).
generate_server() ->
Table_num = 0,
Player_num = 0,
io:format("Server generated...~n", []),
io:format("The current number of tables is ~w~n", [Table_num]),
io:format("The current number of players is ~w~n", [Player_num]),
receive
login ->
io:format("A new player has connected!~n", []),
New = Player_num + 1,
io:format("The current number of players is ~w~n", [New]);
logout ->
io:format("You have beeen succesfully disconnected~n", [])
end.
start_server() ->
io:format("Welcome player!~nInitializing game...~n", []),
io:format("Generating server...~n", []),
register(server,spawn(game, generate_server, [])).
add_player() ->
server ! login.
remove_player() ->
server ! logout.
このコードを実行すると、主な問題が 2 つあります。
- add_player() を実行してから remove_player() を実行すると、この 2 番目の関数が例外でクラッシュします。
- 1 つのターミナル ウィンドウでプログラムを起動し、2 つ目のターミナル ウィンドウで add_player() を実行すると、エラーが発生します。複数の端末ウィンドウで実行できるようにするにはどうすればよいですか?
どんな助けでも大歓迎です。