diff options
Diffstat (limited to 'tictactoe-2/apps/ttt_server/src/game.erl')
-rw-r--r-- | tictactoe-2/apps/ttt_server/src/game.erl | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tictactoe-2/apps/ttt_server/src/game.erl b/tictactoe-2/apps/ttt_server/src/game.erl new file mode 100644 index 0000000..8c6550a --- /dev/null +++ b/tictactoe-2/apps/ttt_server/src/game.erl @@ -0,0 +1,36 @@ +-module(game). +-author("trygvis"). + +-export([ + game_loop/2]). + +-import(ttt, [empty_board/0]). + +-record(state, { + id, + board = ttt:empty_board(), + player1, + player2}). + +game_loop(Id, Player1) -> loop(#state{ + id = Id, + player1 = Player1}). + +loop(State) -> + Id = State#state.id, + receive + {From, join} when not is_pid(State#state.player2) -> + io:format("game ~p: player joined: ~p~n", [Id, From]), + From ! {joined, State#state.id}, + loop(#state{player2 = From}); + {From, join} -> + io:format("game ~p: busy: ~p~n", [Id, From]), + From ! {busy}, + loop(State); + {From, show} -> + Str = ttt:format(State#state.board), + io:format("game ~p: current state:~n~p~n", [Id, Str]), + From ! Str, + loop(State) + end, + State. |