変数Hの数値で上下左右のどちらに移動中であるか 判定していますよね? で、変数Hの値が移動方向と一致しないときにSPANIMを 実行してその『後に』エンカウントするかどうか判定して いるため移動方向が変わる一瞬しかエンカウントの 判定をしていません。