libgdx数组列表包含所有状态的元素

时间:2015-02-11 18:25:25

标签: java arrays state

我正在使用libGDX,并有一个像这样的数组列表:

public final List<Element1> element1s;

然后我添加了这样的元素:

    Element1 element1 = new Element1(384, 960);
    element1s.add(element1);

    Element1 element2 = new Element1(384 + 122, 960 - 24);
    element1s.add(element2);

Element1的类为每个元素提供一个随机状态:

// STATE
public int ELEMENT1_STATE1_GREEN = 0;
public int ELEMENT1_STATE1_BLUE = 1;
public int ELEMENT1_STATE1_PINK = 2;
public int ELEMENT1_STATE1_YELLOW = 3;
public int ELEMENT1_STATE1_RED = 4;
public int ELEMENT1_STATE1_ORANGE = 5;
public int ELEMENT1_STATE1_PURPLE = 6;
public int ELEMENT1_STATE1_WHITE = 7;

public Element1(float x, float y) {
    super(x, y, ELEMENT1_WIDTH, ELEMENT1_HEIGHT);
    state1 = rand.nextInt(8);
}

现在我想检查列表中的元素是否包含state1的所有整数(从0到7)...确切地说,如果(巧合)列表包含一个state1 = 0的element1,一个元素1 state1 = 1,一个element1 = state2 =等等,直到element1,state1 = 7 ......所以没有两个元素具有相同的state1。我该怎么做?

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解这个问题,但这是我可能会这样做的,假设你的目标是确定是否所有来自0-7的整数都被表示。我最初想过,创建8个布尔值设置为false,然后循环遍历列表并在找到每个整数时将它们标记为true。但是,如果对单个int使用按位运算,则可以通过少量输入完成此操作。

private boolean doesElement1ListRepresentAllState1Types(List<Element1> list){
    int representedInts = 0;
    for (Element1 element : list)
        representedInts |= (1 << element.state1);
    return representedInts == Integer.parseInt("11111111", 2);
}