Javascript (usando biblioteca externa) (235 bytes)
Caramba, isso foi difícil! Bem ... minha biblioteca não era realmente a tarefa certa para esse haha. Mas gostei do desafio
(x,y)=>{r=x-1;s=y-1;m=Math.max(r,s);n=Math.min(r,s);l=_.RangeDown(s,y).WriteLine(z=>_.Range(0,x).Write("",w=>z==0&&w==0?"X":(z==w||(z==s&&w>=n)||(w==r&&z>=n))?"#":"."));return l+"\r\nMove count: "+(l.length-l.split("#").join("").length)}
Link para lib: https://github.com/mvegh1/Enumerable
Explicação do código: Crie uma função de 2 variáveis. Armazene x-1 e y-1 em variáveis. Armazene max e min em variáveis. Crie um intervalo vertical decrescente de números de (y-1) para uma contagem de y. Para cada elemento na faixa vertical, escreva uma linha para o elemento atual, de acordo com o predicado complexo. Esse predicado cria um intervalo crescente de números inteiros a partir de 0, para uma contagem de x. Para cada elemento nesse intervalo, concatene em 1 sequência de acordo com um predicado complexo. Esse predicado verifica se na parte inferior esquerda, caso contrário, na diagonal; caso contrário, verifica se estamos na borda X ou Y. Finalmente, tudo isso foi armazenado em uma variável. Então, para obter a contagem de movimentos, basicamente contamos os números. Em seguida, concatene-o para a variável armazenada e retorne o resultado
Isso foi um bocado haha. A captura de tela tem o número de bytes errado porque eu encontrei uma maneira de salvar 4 bytes ao postar isso
EDIT: Vejo que outras respostas não estão colocando "Move count:" em sua saída, mas a minha é. Se isso não é um requisito, isso raspa vários bytes ...