とりあえず上記のソースで25と29で同じ引き算しているのはおかしいですねー。 あとは座標のチェックなのですが、始めに座標のチェック(変数にいれる)をしてから後でまとめてIFで座標調整した方がいいですね。そうしないと補正した値を元にBGをチェックする事になっちゃってるんで、おかしな事になってる感じだと思います。 とりあえずは上記の点に気をつけて修正してみてくださいー。