0

テキストベースのゲームを作成していますが、各ボックスには、プレイヤー、モンスター、ヒース パックのいずれかを入れないようにしたいと考えています。次のようなオブジェクトの配列があります。

var squares = [

    square1 = { //each square with its own number
        player:false,
        monster:false,
        healthPack:false
    },

    square2 = {
        player:false,
        monster:false,
        healthPack:false
    }

];

それらのいずれかが正方形にある場合は、それを true に変更します。既に true であるかどうかを確認する方法を知りたいです。

これは私が知りたいことです:

for ( var i in sqaures[x] ) {
     if( what do i put here??? == true ) return;
}

または別の事前に書かれた方法がある場合は?

4

3 に答える 3

0

おそらく、このようなヘルパー関数です。

Javascript

function isSquareTrue(square) {
    var i;

    for (i in square) {
        if (square.hasOwnProperty(i) && square[i]) {
            return true;
        }
    }

    return false;
}

var squareXX = { //each square with its own number
    player: false,
    monster: false,
    healthPack: false
}

console.log(isSquareTrue(squareXX));

の上jsfiddle

更新:配列内の正方形を示す変更された質問について

Javascript

function anySquaresTrue(arrayOfSquares) {
    var length,
        index,
        property,
        square;

    for (index = 0, length = arrayOfSquares.length; index < length; index += 1) {
        square = arrayOfSquares[index];
        for (property in square) {
            if (square.hasOwnProperty(property) && square[property]) {
                return true;
            }
        }
    }

    return false;
}

var squares = [{ //each square with its own number
        player: false,
        monster: false,
        healthPack: false
    }, {
        player: false,
        monster: false,
        healthPack: false
    }];

console.log(anySquaresTrue(squares));

の上jsfiddle

于 2013-08-29T22:25:20.827 に答える
0
    var squareXX = { //each square with its own number
    player:false,
    monster:false,
    healthPack:true
    }
    for (key in squareXX) {
      if (squareXX[key] == true){
      alert("true is a " + key);
      }
    }

このコードを試してください。true をアラートする必要があるのは healthPack です。

于 2013-08-29T22:25:21.810 に答える
-1

これだけということですか?

if ((player) || (monster) || (healthPack)) {...
于 2013-08-29T22:21:53.530 に答える