Когда игрок нажимает на еду, она исчезает

#java #processing

#java #обработка

Вопрос:

Я новичок в программировании, так что будь со мной, лол. Наш учитель дал нам игру, в которую нам нужно добавить некоторые элементы. Это игра, в которой у нас есть игрок, несколько врагов и немного еды, сделанной из прямоугольников. Если игрок нажимает на еду, я хочу, чтобы еда появлялась где-то еще в окне. Вот код, в котором я пытаюсь это сделать:

  private void updateFood(){
     for(int i = 0; i < food.length;   i)
    {
      //Should we follow or move randomly?
      //2 out of 3 we will follow..
      if(rnd.nextInt(3) < 2)
      {
        //We follow
        int dx = player.getX() - food[i].getX();
        int dy = player.getY() - food[i].getY();
        if(abs(dx) > abs(dy))
        {
          if(dx > 0)
          {
            //Player is to the right - opiste
            food[i].moveLeft();
          }
          else
          {
            //Player is to the left - opiste
            food[i].moveRight();
          }
        }
        else if(dy > 0)
        {
          //Player is down; - opiste
          food[i].moveUp();
        }
        else
        {//Player is up; - opiste
          food[i].moveDown();
        }
      }
      else
      {
        //We move randomly
        int move = rnd.nextInt(4);
        if(move == 0)
        {
          //Move right
          food[i].moveRight();
        }
        else if(move == 1)
        {
          //Move left
          food[i].moveLeft();
        }
        else if(move == 2)
        {
          //Move up
          food[i].moveUp();
        }
        else if(move == 3)
        {
          //Move down
          food[i].moveDown();
        }
      }
      if(food[i].getX() == player.getX() amp;amp; food[i].getY() == player.getY()){
        food[i].getX() = random(0,width);
food[i].getY() = random(0,height);


      }
    }
  
    
  }

  

последние 10 строк (или около того) — это то, где у меня проблема.

     if(food[i].getX() == player.getX() amp;amp; food[i].getY() == player.getY()){
        food[i].getX() = random(0,width);

food[i].getY() = random(0,height);
  

Комментарии:

1. Проблема в том, что ваша еда не регистрирует столкновение или что она не телепортируется после столкновения (в случае сомнений, вы можете добавить println("collision registered, food should teleport"); рядом с food[i].getY() = random(0,height); линией).

Ответ №1:

Учитывая ограниченную информацию о том, какие методы есть у ваших food[index] объектов, я предполагаю .getX() , что она доступна только для чтения, что означает, что вы не можете установить для нее значение. Либо найдите .setX(number) метод, либо используйте существующий .moveLeft/Right/Up/Down(number) с небольшим количеством математики.