当玩家碰到食物时就会消失

问题描述

我是编程新手,所以请大声笑。我们的老师给了我们一个游戏,我们需要在其中添加一些元素。在这个游戏中,我们有一个玩家,一些敌人和一些用矩形制成的食物。如果玩家碰到食物,我希望食物在窗口的其他地方产生。这是我试图实现的代码

 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() && food[i].getY() == player.getY()){
        food[i].getX() = random(0,width);
food[i].getY() = random(0,height);


      }
    }
  
    
  }

最后10行(或大约10行)是即时通讯出现问题的地方。

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

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

解决方法

由于您的food[index]对象具有什么方法的信息有限,我想猜测.getX()是只读的,这意味着您无法为其设置值。找到.setX(number)方法,或者使用已有的.moveLeft/Right/Up/Down(number)进行一些数学运算。