簡體   English   中英

如何在我的數組列表中找到一個元素?

[英]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

但是,只要player1player2為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM