#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)
с небольшим количеством математики.