В настоящее время я создаю игру и имею проблему, которая, как мне кажется, я знаю, почему она происходит, но не совсем уверена и даже если бы я знал, не знаю, как ее решить. У меня есть 2D-массив 10 x 10 и есть класс «игрока», который занимает плитку. Теперь я создал 2 экземпляра плеера и переместил их через swiping. По краям я поставил «стены», которые игрок не может пройти, и все отлично работает, пока я не удалю стену. Как только я удаляю стену и перемещаю персонажа/игрока на край экрана, игрок не может идти дальше. Проблема возникает здесь, когда второй экземпляр игрока не находится на краю экрана, но говорит 2 плитки из первого экземпляра «игрока», который находится на краю. Если я попытаюсь переместить их дальше в направлении края, я понимаю, что первый экземпляр игрока не двигался и ничего не делал, но второй экземпляр игрока все равно должен двигаться, но он не будет.Проблема с логикой игры для Android
Это код, который выполняется, когда пользователь пойло:
if (player.getArrayX() - 1 != player2.getArrayX()) {
player.moveLeft();
} else if (player.getArrayX() - 1 == player2.getArrayX() && player.getArrayY() != player2.getArrayY()) {
player.moveLeft();
}
if (player2.getArrayX() - 1 != player.getArrayX()) {
player2.moveLeft();
} else if (player2.getArrayX() - 1 == player.getArrayX() && player2.getArrayY() != player.getArrayY()) {
player2.moveLeft();
}
В классе игрока у меня есть:
public void moveLeft() {
if (alive) {
switch (levelMaster.getLevel1(getArrayX() - 1, getArrayY())) {
case 0:
break;
case 1:
subX(); // basically moves player left
setArrayX(getArrayX() - 1); // shifts x coord of player 1 within tilemap
Log.d("semajhan", "x: " + getArrayX());
break;
case 9:
subX();
setArrayX(getArrayX() - 1);
setAlive(false);
break;
}
}
}
Любая помощь по этому вопросу или дальнейшего понимания было бы весьма признателен, спасибо ,
Так много вопросов ... Что такое 'player.getArrayX()'. Что такое 'subX()'. Что делает 'setArray()' do. Что возвращает 'getLeve1'. Сейчас этот вопрос совершенно неопровержимый, и похоже, что у вас довольно грязный дизайн. – Falmarri
getArrayX() возвращает координату x игрока. subX() вычитает ширину плитки, setArrayX() устанавливает новую координату x игрока, а getLevel возвращает идентификатор карты 2d tile в местоположении (x, y). Я действительно не понимаю, как это связано с вопросом, который я задал, поскольку все эти методы работают отлично. Мне просто интересно, не был ли экземпляр игрока не двигаться из-за того, что что-то связано с первым игровым экземпляром, попавшим в край карты плитки. – semajhan
Я все еще смущен тем, что делает 'subX()'. Кроме того, что означают идентификаторы карты плитки? Я предполагаю, что 0 - стена, 1 - открытое пространство, а 9 означает, что координаты недействительны? – Computerish