Есть ли способ преодолеть различия между данным кодом и реализацией? - PullRequest
1 голос
/ 31 марта 2019

В игре со змеями модель игры не поддерживает реализацию, которую я хотел бы использовать.

Я участвую в дружеском соревновании тех, кто может написать лучший ИИ для игры в змею.,Модель игры - это данность, в ней мы ничего не можем изменить.Я хотел бы реализовать AI поиска пути A *.Проблема в том, что координаты в играх написаны так, что они не поддерживают это решение.Узлы, которые я хотел бы использовать, выглядят как пример ниже.

public final class Coordinate {

    private final int x;
    private final int y;
    }

public class Node {

    private int aStarValueG;
    private int aStarValueF;
    private int aStarValueH;
    private int coordinateX;
    private int coordinateY;
    private boolean isBlocked;
    private Node parent;
    }

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

1 Ответ

0 голосов
/ 31 марта 2019

Из того, что вы написали, я думаю, вы имеете в виду, что вы хотите, чтобы экземпляры Node и Coordinate могли использоваться одновременно? Хорошо, используйте метод шаблона (шаблон проектирования), имея некоторый интерфейс, реализуемый обоими классами, и ваш алгоритм должен использовать методы из этого интерфейса. Если ваш алгоритм не может это поддерживать (из-за изменений во время выполнения и т. Д.), Вы можете рассмотреть некоторые другие шаблоны изменчивости: стратегия, состояние, мост и т. Д.

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