Враг преследует игрока 2D массив в Java - PullRequest
0 голосов
/ 05 мая 2020

Итак, ребята, я создаю игру и в c конкретном случае у меня есть враг и игрок, которые случайным образом появляются в массиве 10x10, а затем враг должен двигаться к игроку, пока они не окажутся на соседних ячейках . Игрок управляется пользователем, и противник должен двигаться в его направлении, чтобы поймать его. Я уже начал и проверил поля массива и места, где может двигаться враг, но я понятия не имею, как это сделать. Вы можете мне помочь?

public void enemyMovement()
{
    if(enemyAlive) {
        if( enemy.getCurrentLine() == 0 ) {
            if( enemy.getCurrentColumn() == 0 ) {
                // only moves to right and down
            }
            else if( enemy.getCurrentColumn() == 9 ) {
                // only moves to left and down
            }
            else {
                // moves to the sides or down
            }
        }
        else if( enemy.getCurrentLine() == 9 ) {
            if( enemy.getCurrentColumn() == 0 ) {
                // only moves up or right
            }
            else if( enemy.getCurrentColumn() == 9 ) {
                // only moves up or left
            }
            else {
                // only moves to the sides and up
            }
        }
        else if ( enemy.getCurrentColumn() == 0 ) {
            if( enemy.getCurrentLine()  != 0 &&  enemy.getCurrentLine()  != 9) {
                // can go anywhere excepts left
            }
        }
        else if( enemy.getCurrentColumn() == 9 ) {
            if( enemy.getCurrentLine()  != 0 &&  enemy.getCurrentLine()  != 9) {
                // can go anywhere excepts right
            }
        }
        else {
            // can goes anywhere
        }
    }
}

1 Ответ

0 голосов
/ 05 мая 2020

Проверьте расстояние между противником и игроком и двигайтесь вместе с осью, на которой расстояние больше. Например, если координата врага (1,2), а игрок находится в (9,5), то расстояние между ними будет (8,3), поэтому противник должен двигаться по оси x до (2, 2). Если расстояние между ними примерно равно (5,5), то вы можете выбрать приоритет оси x / y или просто случайным образом выбрать одну ось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...