在贪吃蛇游戏中,游戏模型不支持我想要使用的实现。
我正在参加一场友谊赛,看谁能为贪吃蛇游戏编写最好的 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;
}
我正在寻找一种方法来弥合这两个类之间的差异。我希望我的人工智能能够通过节点与坐标进行通信,反之亦然。我熟悉设计模式,我觉得它们是这个问题的解决方案,但我不知道如何解决。我也愿意接受任何其他建议。谢谢。
根据您所写的内容,我认为您的意思是您希望节点和坐标实例都能够使用?好吧,使用模板方法(设计模式),通过让两个类都实现某种接口(interface),并且您的算法应该使用该接口(interface)中的方法。如果您的算法无法支持这一点(由于运行时更改等),您可能需要研究一些其他可变性模式:策略、状态、桥接等。
我是一名优秀的程序员,十分优秀!