Actionscript 3 actionscript中断if语句以检查下一个

Actionscript 3 actionscript中断if语句以检查下一个,actionscript-3,for-loop,Actionscript 3,For Loop,我正在为一个简单的井字游戏制作一个机器人。问题是,在botCheck函数中,当第0列第0列和第0列第1列为“O”时,则第0列第2列出现“X”,当我尝试将“O”进行另一个组合时(例如第0列第0列和第1列第1列),它应该在不同的if语句中进行检查,但我的代码似乎仍然只在第一个if语句中进行检查,该语句将继续跟踪(“D”)然后卡在那一部分 所以这里有一个问题,在else{trace(“D”);},是否有任何代码可以替换为跳过第一个if语句,转到第二个if语句,以便它可以检查“O”的其他组合 另外,我已

我正在为一个简单的井字游戏制作一个机器人。问题是,在botCheck函数中,当第0列第0列和第0列第1列为“O”时,则第0列第2列出现“X”,当我尝试将“O”进行另一个组合时(例如第0列第0列和第1列第1列),它应该在不同的if语句中进行检查,但我的代码似乎仍然只在第一个if语句中进行检查,该语句将继续跟踪(“D”)然后卡在那一部分

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

另外,我已经尝试使用
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;
                        }
                    }
                }


        }

    }
}
包
{
公共类Bot
{
私有变量n:int=0;
私有var-rndm:int;
私有变量v:int;//垂直
私有变量h:int;//水平
私有变量移动:布尔值=false;;
私有变量main:main;
公共功能机器人(主:主):无效
{
_main=main;
}
私有函数随机数(最小:数,最大:数):数
{
返回Math.floor(Math.random()*(1+max-min)+min);
}
公用函数botMove():void
{
botCheck();
如果(n==0&&moving==false)
{
rndm=随机数(0,2);
v=rndm;
rndm=随机数(0,2);
h=rndm;
if(_main.squareArray[v][h]==0)
{
_main.squareArray[v][h]=1;
_xoArray[v][h].push(_main.xo);
移动=真;
fillX();
n=0;
_main.xo=“O”;
}
其他的
{
botMove();
}
}
如果(n==1&&moving==false)
{
if(_main.squareArray[v][h]==0)
{
_main.squareArray[v][h]=1;
_xoArray[v][h].push(_main.xo);
移动=真;
fillX();
n=0;
_main.xo=“O”;
}
}
}
私有函数fillX():void
{
_main.x=新的x;
_main.xoContainer.addChild(_main.x_u);
_main.x_ux=_main.gameWidth/_main.lebar*(1+(h))+_main.gameWidth/(_main.lebar*4);
_main.x_u.y=_main.gameHeight/_main.panjang*(1+(v))+_main.gameHeight/(_main.panjang*4);
_main.x_u.width=_main.square.width/2;
_main.x_u.height=_main.square.height/2;
}
私有函数botCheck():void
{

for(var a:int=0;a如果要检查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 if”重复该操作

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


您还可以清除for循环中所有空的else{}块;它们无论如何都不会产生任何影响。如果您有任何问题,请告诉我:)

非常感谢!我曾想过使用if,但我不知道将else块(n=0;moving=false;)放在何处,空的else块只是用于检查开始时的内容。