Вопрос

Хорошо, я создаю эту новую игру на Java.Это может быть простой вопрос, но кто-нибудь, пожалуйста, может мне помочь с этим?

Итак, если "Парень" столкнется с платформами, он не сможет двигаться правильно (очевидно).

Это то, что у меня есть:

if(Guy.x + Guy.width == (platform2.x ^ platform3.x)) {} else{
                    goRight();
}

"^" должно быть "или".У меня есть пустота под названием goRight();

таким образом, это было бы похоже на "если x парня плюс ширина парня такая же, как у platform2 или platform3 x, тогда идите направо.Я не хочу, чтобы мне приходилось это делать:

if(Guy.x + Guy.width == platform2.x || Guy.x + Guy.width == platform3.x)) {} else{
            goRight();
}

И плюс ко всему, у меня есть еще около 20 платформ, так что было бы проще использовать первый способ, если это возможно.И я тоже должен сделать обнаружение столкновения слева.

Это было полезно?

Решение

Если платформа - это класс, который имеет значение x, я бы предложил поместить все свои платформы в коллекцию некоторых видов и итерации по нему.Внутри петли делайте что-то вроде

for(Platform p: platforms){
     if(Guy.getX() + Guy.getWidth() == p.getX()){
        //whatever
     }else{
        goRight()
     }
}
.

Другие советы

Вам придется повторить эти условия.

Одним (лучшим) решением было бы создать коллекцию с вашим x переменные и использование .contains() метод на нем.Это сделало бы ваш код намного более читабельным.

В качестве альтернативы, объедините все ваши платформы в коллекцию, зациклите ее и проверьте соответствие каждого значения x переменная.

Это так, как язык разработан ... Так бесполезно бороться с этим.

Все, что вы можете сделать, это использовать вспомогательные переменные для сокращения выражений.Но вам всегда придется правильно что-то вроде генеракодицетагкода.

Вам нужны более продвинутые структуры для хранения информации о ваших платформах.Подумайте о том, чтобы иметь генеракодицетагкод X-координат ваших платформ и выполнение операции «содержит»

Например:

Set<Integer> xcoords = new HashSet<Integer>();
xcoords.add(platform2.x);
xcoords.add(platform3.x);

if (xcoords.contains(Guy.x + Guy.width)){
} else {
    goRight();
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top