英文:
When the player hits the food make it disapear
问题
以下是您提供的代码的翻译部分:
private void updateFood(){
for (int i = 0; i < food.length; ++i) {
// 是否应该追随或随机移动?
// 3次里有2次我们会追随...
if (rnd.nextInt(3) < 2) {
// 我们追随
int dx = player.getX() - food[i].getX();
int dy = player.getY() - food[i].getY();
if (Math.abs(dx) > Math.abs(dy)) {
if (dx > 0) {
// 玩家在右边 - 相反的方向
food[i].moveLeft();
} else {
// 玩家在左边 - 相反的方向
food[i].moveRight();
}
} else if (dy > 0) {
// 玩家在下面 - 相反的方向
food[i].moveUp();
} else {
// 玩家在上面 - 相反的方向
food[i].moveDown();
}
} else {
// 我们随机移动
int move = rnd.nextInt(4);
if (move == 0) {
// 向右移动
food[i].moveRight();
} else if (move == 1) {
// 向左移动
food[i].moveLeft();
} else if (move == 2) {
// 向上移动
food[i].moveUp();
} else if (move == 3) {
// 向下移动
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行是我遇到问题的地方。
if (food[i].getX() == player.getX() && food[i].getY() == player.getY()) {
food[i].getX() = random(0, width);
food[i].getY() = random(0, height);
}
英文:
I am new to programing, so bare with me lol. Our teacher has given us a game in which we need to add some elements to it. It's a game where we have a player, some enemies and some food made out of rectangles. If the player hits the food i want the food to spawn somewhere else in the window. Heres is the code where im trying to make it happen:
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);
}
}
}
the last 10 lines (or so) is where im having the problem.
if(food[i].getX() == player.getX() && food[i].getY() == player.getY()){
food[i].getX() = random(0,width);
food[i].getY() = random(0,height);
</details>
# 答案1
**得分**: 2
由于对于你的 `food[index]` 对象的方法了解有限,我猜测 `.getX()` 是只读的,意味着你不能给它设置一个值。要么找一个 `.setX(number)` 方法,要么使用现有的 `.moveLeft/Right/Up/Down(number)` 方法配合一些数学运算。
<details>
<summary>英文:</summary>
With limited info on what methods your `food[index]` objects have, I'm going to guess `.getX()` is read-only, meaning you can't set a value to it. Either find a `.setX(number)` method, or use the existing `.moveLeft/Right/Up/Down(number)` with a bit of maths.
</details>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论