[英]How do I locate a element in my arraylist?
嗨,我是一名學生,在我的課堂上,我們正在編寫一個蛇游戲,現在問題專家認為,有時候吃掉蘋果的游戲會凍結,我們發現這可能是由兩個蘋果同時產卵引起的立場,但我們不知道如何避免這種情況。 蘋果是在數組列表中生成的,所以我認為我們需要在數組列表中定位元素,以說不允許Programm在此處生成它們,並且需要尋找新的位置,直到找到一個沒有現有蘋果的蘋果。
我在Internet上搜索了是否可以解決我的問題,但我認為這有點具體,或者我走的路不對,有些人會發現我無法解決的問題。
如果您需要更多詳細信息,請給我留言。 我很高興能幫助您: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
正確值player2
。
但是,只要player1
或player2
為true,您的存在就應該為true。
您可以改用以下內容:
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
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.