sayさんの言うようにフローチャートを書くといいと思いますが、フローチャートを書かないまでもプログラムの流れをちゃんと追いながら動作の確認をしてみると良いかと思います。 そうすると29行目でXXとYYを毎回0にしていて、IFでXやYに入れているのはXXやYYに1を足したり引いたりしているので結果的にXとYは-1,0,1のいずれかにしかならない事になり、想定している動作とは違うことに気づけると思います。