actionscript break if语句来检查下一个

时间:2014-05-23 16:30:15

标签: actionscript-3 for-loop

我正在为一个简单的tic tac toe游戏制作机器人。这是问题,在botCheck函数中,当第0行第0行和第0行第1列是" O",然后是" X"出现在第0行第2行,当我试图制作另一个" O" (例如,第0行第0行和第1行第1列),它应该检查不同的if语句,但是我的代码似乎仍然只检查将保持跟踪的第一个if语句(" D")和卡在那一部分。

所以问题是,在else{trace("D");},是否有任何代码可以替换为跳过第一个if语句并转到第二个,以便它可以检查"的其他组合。 O" ?

P.S。我尝试使用continue;,但它只进入下一个循环并仍然停留在第一个if语句。

谢谢!

package
{
    public class Bot
    {
        private var n:int = 0;
        private var rndm:int;
        private var v:int;//vertical
        private var h:int;//horizontal
        private var moving:Boolean = false;;

        private var _main:Main;

        public function Bot(main:Main):void
        {
            _main = main;
        }

        private function randomNumber(min:Number, max:Number):Number
        {
            return Math.floor(Math.random()*(1+max-min)+min);
        }

        public function botMove():void
        {
            botCheck();
            if(n == 0 && moving == false)
            {
                rndm = randomNumber(0,2);
                v = rndm;
                rndm = randomNumber(0,2);
                h = rndm;
                if(_main.squareArray[v][h] == 0)
                {
                    _main.squareArray[v][h] = 1;
                    _main.xoArray[v][h].push(_main.xo);
                    moving = true;
                    fillX();
                    n = 0;
                    _main.xo = "O";
                }

                else
                {
                    botMove();
                }
            }

            if(n == 1 && moving == false)
            {
                if(_main.squareArray[v][h] == 0)
                {
                    _main.squareArray[v][h] = 1;
                    _main.xoArray[v][h].push(_main.xo);
                    moving = true;
                    fillX();
                    n = 0;
                    _main.xo = "O";
                }
            }
        }
        private function fillX():void
        {

                _main.x_ = new X  ;
                _main.xoContainer.addChild(_main.x_);

                _main.x_.x = _main.gameWidth / _main.lebar *(1+(h))+ _main.gameWidth/(_main.lebar*4);
                _main.x_.y = _main.gameHeight / _main.panjang * (1+(v))+_main.gameHeight/(_main.panjang*4);
                _main.x_.width = _main.square.width / 2;
                _main.x_.height = _main.square.height / 2;
        }

        private function botCheck():void
        {

                for(var a:int = 0; a<_main.panjang;a++)
                {
                    if(n != 0)
                    {
                        break;
                    }
                    for(var b:int = 0;b<_main.lebar;b++)
                    {
                        if(_main.xoArray[a][b]=="O" && _main.xoArray[a][b+1] == "O")
                        {
                            if(b+2 < _main.lebar && _main.xoArray[a][b+2] == 0)
                            {
                                n = 1;
                                v = a;
                                h = b+2;
                                moving = false;
                                break;
                            }
                            else if(_main.xoArray[a][b-1] == 0)
                            {
                                n = 1;
                                v = a;
                                h = b-1;
                                moving = false;
                                break;
                            }
                            else
                            {
                                trace("D");

                            }
                        }
                        else if(_main.xoArray[a][b] == "O" && _main.xoArray[a+1][b] =="O")
                        {
                            if(a+2 < _main.panjang && _main.xoArray[a+2][b] == 0)
                            {
                                n = 1;
                                v = a+2;
                                h = b;
                                moving = false;
                                break;
                            }
                            else if(a != 0)
                            {
                                if(_main.xoArray[a-1][b] == 0)
                                {
                                    n = 1;
                                    v = a-1;
                                    h = b;
                                    moving = false;
                                    break;
                                }
                            }
                            else
                            {

                            }
                        }

                        else if(_main.xoArray[a][b]=="O" && _main.xoArray[a+1][b+1] == "O")
                        {trace("B");
                            if(a+2 < _main.panjang && b+2 < _main.lebar && _main.xoArray[a+2][b+2] == 0)
                            {
                                n = 1;
                                v = a+2;
                                h = b+2;
                                moving = false;
                                break;
                            }
                            else if(a != 0)
                            {
                                if(_main.xoArray[a-1][b-1] == 0)
                                {
                                    n = 1;
                                    v = a-1;
                                    h = b-1;
                                    moving = false;
                                    break;
                                }
                            }
                            else
                            {

                            }
                        }

                        else if(_main.xoArray[a][b+2]=="O" && _main.xoArray[a+1][b+1] == "O")
                        {trace("A");
                            if(a+2 < _main.lebar && _main.xoArray[a+2][b] == 0)
                            {
                                n = 1;
                                v = a+2;
                                h = b;
                                moving = false;
                                break;
                            }
                        }

                        else if(_main.xoArray[a][b] == "O" && _main.xoArray[a+1][b-1] == "O")
                        {
                            if(a != 0 && b+1 < _main.lebar && _main.xoArray[a-1][b+1] == 0)
                            {
                                n = 1;
                                v = a-1;
                                h = b+1;
                                moving = false;
                                break;
                            }
                        }

                        else
                        {
                            n  = 0;
                            moving = false;
                        }
                    }
                }


        }

    }
}

1 个答案:

答案 0 :(得分:0)

如果您想检查for循环中的所有if语句,只需从其他if语句中删除“else”。

因此,您的第一个if语句没问题,但下一个if语句将来自

else if(_main.xoArray[a][b] == "O" && _main.xoArray[a+1][b] =="O")

简单地

if(_main.xoArray[a][b] == "O" && _main.xoArray[a+1][b] =="O")

(只是省略了其他)。

对所有其他最外面的重复这一点,否则“如果你的循环中有”。

现在,我在底部看到你有一个最终的“else”,它将n设置为0并移至false。如果进行上面列出的更改,则可以删除else块,而是将这些语句放在for循环的最开头的else块(n = 0; moving = false)中。因此,除非触发任何if语句,否则n将等于0并且move将等于false,这是预期的结果。

你也可以摆脱for循环中所有空的else {}块;他们无论如何也没有贡献任何东西。如果您有任何问题,请告诉我们。)