-module(tictactoe).
-export([new/0]).
-export([play/4]).
-export([check/1]).
new() ->
{undefined, undefined, undefined,
undefined, undefined, undefined,
undefined, undefined, undefined}.
play(Who, X, Y, Board) ->
setelement((Y - 1) * 3 + X, Board, Who).
check(Board) ->
case Board of
{x, x, x,
_, _, _,
_, _, _} -> {victory, x};
{_, _, _,
x, x, x,
_, _, _} -> {victory, x};
{_, _, _,
_, _, _,
x, x, x} -> {victory, x};
{x, _, _,
x, _, _,
x, _, _} -> {victory, x};
{_, x, _,
_, x, _,
_, x, _} -> {victory, x};
{_, _, x,
_, _, x,
_, _, x} -> {victory, x};
{x, _, _,
_, x, _,
_, _, x} -> {victory, x};
{_, _, x,
_, x, _,
x, _, _} -> {victory, x};
{o, o, o,
_, _, _,
_, _, _} -> {victory, o};
{_, _, _,
o, o, o,
_, _, _} -> {victory, o};
{_, _, _,
_, _, _,
o, o, o} -> {victory, o};
{o, _, _,
o, _, _,
o, _, _} -> {victory, o};
{_, o, _,
_, o, _,
_, o, _} -> {victory, o};
{_, _, o,
_, _, o,
_, _, o} -> {victory, o};
{o, _, _,
_, o, _,
_, _, o} -> {victory, o};
{_, _, o,
_, o, _,
o, _, _} -> {victory, o};
{A, B, C,
D, E, F,
G, H, I} when A =/= undefined, B =/= undefined, C =/= undefined,
D =/= undefined, E =/= undefined, F =/= undefined,
G =/= undefined, H =/= undefined, I =/= undefined ->
draw;
_ -> ok
end.