2015-02-11 72 views
0

林libGDX和有一个这样的阵列列表中的所有状态中的元素: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); 

的元素1的类给每个元件的随机状态:

// 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的所有ints(从0到7)......确切地说,如果(同时)列表包含状态1 = 0的元素1,状态1 = 1的元素1,状态1 = 2的元素1 ...等等,直到元素1与状态1 = 7 ...因此不存在具有相同状态1的两个元素。我应该怎么做?

+1

有可能有几十种方法来做到这一点。但是我的问题是,如果你发现它至少包含一种类型,你将如何处理这个列表?如果答案是你将重建列表,也许你应该改变你的创建列表的方法,这样它不会产生一个不可接受的列表。此外,你没有提到列表中有多少元素,这就是为什么我没有发布任何解决方案。我不清楚它是否只有8个项目,或者是否大于8个,并且您是否只想检查每个类型中是否至少有*个。 – Tenfour04 2015-02-11 21:34:53

+0

首先感谢您的回复......抱歉,我的问题有点不清楚,我猜!我试图用这个代码来玩游戏。列表中有16个元素!如果我拍摄一个元素,它会随机改变它的状态......但是在游戏运行时总是必须有所有状态......所以我必须检查一个镜头元素是否可以随机更改其状态,因为其他元素重复从0到7的所有状态,或者如果它必须更改为状态,其他元素不表示在那个时间.. – 2015-02-11 22:33:04

回答

0

我不确定我是否理解这个问题,但这是我可能会这么做的,假设您的目标是确定是否表示0-7中的所有整数。我最初认为,创建8个布尔值设置为false,然后循环遍历列表并标记它们为真,因为找到每个整数。但是,如果你在一个int上使用按位运算,那么可以少打字。

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

嘿有...感谢您的回答...我会尝试您的建议!非常感谢! – 2015-02-11 22:34:27