问题描述
我是编程新手,所以请大声笑。我们的老师给了我们一个游戏,我们需要在其中添加一些元素。在这个游戏中,我们有一个玩家,一些敌人和一些用矩形制成的食物。如果玩家碰到食物,我希望食物在窗口的其他地方产生。这是我试图实现的代码:
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)
进行一些数学运算。