使用actionscript中的if语句检查相同的值?

时间:2012-11-01 19:54:58

标签: actionscript-3 actionscript flixel

我正在使用Flixel开发一个match-3风格的益智游戏,因此我正在检查每一行和每列,以确定在任何给定时间是否匹配。但是,我有6个不同的部分(截至目前)是活动的,每个部分由整数标识。鉴于此,我可以通过这样做来检查每一件作品:

public function matchingCheck():void
    {
        if (piecesArray[0][1] == 1 && piecesArray[1][1] == 1 && piecesArray[2][1] == 1) {
            FlxG.log("Yay!");
        }
    }

然而,这是相当笨拙的,基本上会导致我的喜好重复过多。

至少,我希望能够检查这些数组中的值是否彼此相等,而不必指定它是哪个值。在最好的情况下,我希望能够检查整个行的三个(或更多)相邻的部分,但我会满足于手动执行该部分。

感谢您的帮助!


编辑:没关系,我的编辑没有用。它只是检查是否piecesArray[2][1] == 1,这让我成为一只悲伤的熊猫。


编辑2:我在下面选择了正确的答案 - 这不完全是我使用过的,但它确实让我开始了。谢谢Apocalyptic0n3!

2 个答案:

答案 0 :(得分:1)

您可以使用其他功能

来减少该代码
private function checkValid( arrayOfItemsToCheck:Array, value:* ):Boolean {
    for ( var i:Number = 0; i < arrayOfItemsToCheck.length; i++ ) {
        if ( arrayOfItemsToCheck[i] != value ) {
            return false;
        }
    }
    return true;
}

然后你只需在if语句中执行此操作:

if ( checkValid( [ piecesArray[0][1], piecesArray[1][1], piecesArray[2][1] ], 1 ) ) {
            FlxG.log("Yay!");
}

但这确实假设所有项目都必须等于1。它仍然是很多代码,但它删除了一组“= 1&amp;&amp;”每张支票。

答案 1 :(得分:0)

这样的事情怎么会告诉你两个匹配是否存在以及匹配是什么:

public function checkForMatch():void{
    var rows:int = piecesArray.length;
    for(var i:int=0; i<rows; i++){
        var match:int = checkRow(piecesArray[i]);
        if(match > -1) {
            FlxG.log("Yay you matched " + match);
        }
    }
}

private function ckeckRow(row:Array):int{
    if(row[0] == row[1] == row[2]){
        return row[0];
    }
    return -1;
}