ある22×22の領域にて外周に4機の端末を動かします。
各辺上に動かし例えばcase0であれば (1,18),(1,5)の間を行き来するプログラムを作りたいです。
しかし以下のプログラムでは,(1,18)以降ずっと(1,18)になってしまいました。
解決策があれば教えてください。
プログラムを一部抜粋して載せています。

  function [x, y, xi, yi] = moveTerminal2(obj)
        switch obj.wall_
            case 0
                v = 1;
                xi = 1;
                yi = obj.yi_;
                if(yi >= 18)
                    yi = obj.yi_-1;
                    v = -v;
                elseif(yi <= 5)
                    yi = obj.yi_+1;
                    v = -v;
                end

            case 1
                 v = -1;
                yi = 1;
                xi = obj.yi_;
                if(yi >= 18)
                    xi = obj.xi_-1;
                    v = -v;
                elseif(xi <= 5)
                    xi = obj.xi_+1;
                    v = -v;
                end


            case 2
                v = -1;
                xi = obj.n1_;
                yi = obj.yi_;
                if(yi >= 18)
                    yi = obj.yi_-1;
                    v = -v;
                elseif(yi <= 5)
                    yi = obj.yi_+1;
                    v = -v;
                end

             case 3
                 v = 1;
                yi = obj.n2_;
                xi = obj.yi_;
                if(yi >= 18)
                    xi = obj.xi_-1;
                    v = -v;
                elseif(xi <= 5)
                    xi = obj.xi_+1;
                    v = -v;
                end


        end