HEIGHT = 600
WIDTH = 600
BACKGROUND = colorant"#f7f7f7"

board = fill(0,3,3)    # 3x3 matrix of the game_ongoing of each tile
game_ongoing = true

circle = Actor("circle.png")
cross = Actor("cross.png")

function draw()
    fill(colorant"#f7f7f7")
    draw(Line(200, 0, 200, 600), colorant"black")
    draw(Line(400, 0, 400, 600), colorant"black")
    draw(Line(0, 200, 600, 200), colorant"black")
    draw(Line(0, 400, 600, 400), colorant"black")
    for i in 1:3
        for j in 1:3
            if board[i, j] == 1
                cross.center = (200j - 100, 200i - 100)
                draw(cross)
            elseif board[i, j] == -1
                circle.center = (200j - 100, 200i - 100)
                draw(circle)
            end
        end
    end
end

function on_mouse_down(g,pos)
    if game_ongoing
        x = pos[1]
        y = pos[2]
        if x < 200
            j = 1
        elseif x < 400
            j = 2
        else
            j = 3
        end

        if y < 200
            i = 1
        elseif y < 400
            i = 2
        else
            i = 3
        end

        if board[i, j] == 0
            board[i,j] = 1
            game_over()
            if game_ongoing
                random_ai()
                game_over()
            end
        else
            println("Invalid move")
            play_sound("eep.wav")
        end
    end
end

function update()

end

function game_over()
    if all(board.!=0)
        println("DRAW!")
        global game_ongoing = false
    end

    for i in 1:3
        if all(board[i,:].== 1) || all(board[:,i].== 1)
            println("PLAYER WINS!")
            global game_ongoing = false
        elseif all(board[i,:].== -1) || all(board[:,i].== -1)
            println("CPU WINS!")
            global game_ongoing = false
        end
    end
end

function random_ai()
    indices = findall(x -> x == 0, board)
    board[rand(indices)] = -1
end