gpt4 book ai didi

java - 如何在数组列表中找到元素?

转载 作者:行者123 更新时间:2023-11-30 01:59:24 25 4
gpt4 key购买 nike

嗨,我是一名学生,在我的类(class)中,我们正在编写一个小蛇游戏,现在的问题是,有时当苹果被吃掉时,游戏会卡住,我们发现这可能是由 2 个苹果生成引起的在相同的位置,但我们不知道如何避免这种情况。苹果是在数组列表中生成的,所以我认为我们需要在数组列表中找到元素,以表明程序不允许在那里生成它们,并且需要搜索新位置,直到找到一个没有现有苹果的位置。

我在互联网上搜索是否有解决我的问题的方法,但我认为它有点具体,或者我走错了路,你们中的一些人会找到我找不到的东西。

如果您需要更多详细信息,请给我留言。我很高兴能帮助您帮助我:D。

private void createApples(int max) {

int loop = 0;
int appleX;
int appleY;
Element apple;
boolean exists;
int index;


for (loop = 0; loop < max; loop++) {
exists = false;

do {
appleX =
new Random().nextInt(bounds.width / SNAKE_SIZE) *
SNAKE_SIZE + SNAKE_SIZE / 2;
appleY =
new Random().nextInt(bounds.height / SNAKE_SIZE) *
SNAKE_SIZE + SNAKE_SIZE / 2;

index = 0;
while (index < apples.size() && !exists) {
exists = apples.get(index).equal(appleX, appleY);
index++;
}



if (!exists)
exists = player.contains(appleX, appleY);
exists = player2.contains(appleX, appleY);



}
while (exists);

apple = new Element(appleX, appleY, SNAKE_SIZE, Color.white, bounds);
apples.add(apple);
}
}

最佳答案

无需详细查看您的代码:

if (!exists) 
exists = player.contains(appleX, appleY);
exists = player2.contains(appleX, appleY);

如果没有花括号,您只需将条件应用于此处的第一行。这是您的计算机将看到的内容:

if (!exists){
exists = player.contains(appleX, appleY);
}

exists = player2.contains(appleX, appleY);

这意味着,无论您已经为 exists 计算了什么 - 它都会被 player2 的真实值覆盖。

但是只要 player1player2 为真,您的存在就应该为真。

您可以使用以下内容:

  exists |= player.contains(appleX, appleY);
exists |= player2.contains(appleX, appleY);

(简写)

if (!exists) 
exists = player.contains(appleX, appleY);

if (!exists)
exists = player2.contains(appleX, appleY);
<小时/>

您能否添加信息,apples 是什么(类型),以及您的 Element 上的 equals/hashcode 方法是如何实现的?

while (index < apples.size() && !exists) {
exists = apples.get(index).equal(appleX, appleY);
index++;
}

(我猜你实现了自己的,因为你也将其称为equal而不是equals)

关于java - 如何在数组列表中找到元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53370584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com