我制作了一个简单的游戏,其中阵列中的一堆对象同时出现。按下鼠标将删除类中的对象数组(下面的示例代码)。当它命中0时,希望它进入另一个游戏状态。我还是很陌生......
void mousePressed() {
if (gameState == RUN_GAME) {
objects.remove(0);
}
}
当它达到0并且草图中没有更多对象并且您按下鼠标时,处理会自动冻结。我尝试过这样的事情(如下),但显然不起作用。一旦对象的数组列表达到0,我怎么能告诉if语句改变gameState?我希望我有道理。
void runGame(){
if (objects.length == 0) {
gameState == WINNER);
}
}
答案 0 :(得分:1)
您似乎将数组与ArrayLists混淆。
阵列是固定长度的"块"您可以通过索引访问的变量。这是一个创建10个整数数组的例子:
int[] array = new int[10];
for(int i = 0; i < array.length; i++){
array[i] = i;
}
注意使用array.length,它给出了数组可以包含的索引数 - 而不是已设置为值的索引数。
您无法增加数组的大小,并且数组没有remove()函数。但是,Processing确实包含append()和shorten()方法,这些方法接受一个数组并返回另一个包含相同项的数组,只删除或添加索引。
另一方面,ArrayLists是动态大小的对象,包含任意数量的索引。您可以向ArrayList添加或删除其他对象。这是一个例子:
ArrayList<Integer> arrayList = new ArrayList<Integer>();
for(int i = 0; i < 10; i++){
arrayList.add(i);
}
ArrayLists没有长度变量 - 相反,它们有一个size()方法。此方法确实返回已添加到其中的对象数。
因此,您的问题的答案是您需要决定是否使用数组或ArrayList,然后坚持使用适合该类型的方法。
可在Processing API中找到更多信息:https://www.processing.org/reference/
答案 1 :(得分:0)
假设您使用的是Java,可以使用以下代码来完成:
if (objects.isEmpty())
{
gameState = WINNER;
}