ボタン入力時にX,Yの座標を記憶しておいて移動先に障害物があるか どうかをCHKCHR関数で調べて障害物があった場合はX、Yの座標を 記憶していた座標に戻すようにするのはどうでしょうか?