我正在用Java实现Stratego AI。 人工智能需要做的一件事就是看看未来可能采取的行动。为此,它应该能够获得当前电路板位置的副本,在那里移动部件(当然不会影响主板),并通过查看前面的多个移动来选择最佳移动(使用MiniMax算法)。
但是,我在使用复制主板部分时遇到问题。我的电路板存储为StrategoPieces的二维阵列:
StrategoPiece board[][];
现在,Stratego的一些部分有特殊规则。我为Spy,Scout,Miner,Flag和Bomb创建了特殊课程,这些课程都继承自StrategoPiece课程。
因此,对于空方块,该板包含'null',如果被占用,则该对象包含StrategoPiece的子类。
我想要复制这个板子,但我无法弄清楚如何制作一个正确的深层复制品。阅读StackOverflow和互联网上的其他地方,我发现了以下几条信息:
然而,我想知道的是,当我拥有一个包含多个类的对象数组时,我可以创建这样的Factory或Constructor Copy方法(所有类都继承自相同的基类,但有些具有额外的逻辑连接的)。
任何帮助都将不胜感激。