如何解决检查算法之前是否“看到”了课程
我正在为国际象棋 AI(极小极大)编写一个简单的算法。 我有一个函数,它获取可能的移动列表并返回当前状态下最佳移动的分数(考虑到棋盘状态)。 我想添加一种方法来检查是否已经看到当前板状态(我不需要也不想保存所有已经看到的板,只是想知道当前板是否已经看到以及分配的值是什么,例如一个哈希码)。 一般来说,我想要一种方法来为一个类(包含多个属性,包括值和引用类型)分配代码(同样,如哈希码),然后保存此代码以备将来检查。
我强调,我不想只检查板/班级参考,但我想检查板/班级内容。
这是一个板类:
public class ChessBoard
{
public Piece[,] board; //Piece as a class as well
public PieceColor myColor; //enum
public PieceColor opColor; //enum
public DateTime lastMoveTime;
public TimeSpan myTimer;
public TimeSpan opTimer;
public GameState currentTurn; //enum
public int enPassantCol = -1;
public bool whiteShortCastleFlag = true;
public bool whiteLongCastleFlag = true;
public bool blackShortCastleFlag = true;
public bool blackLongCastleFlag = true;
//more nonrelevant fields,constructors and logic
}
board Piece 数组可以通过引用来检查。无需检查 Piece 内容(也就是说,如果 Piece[,] 数组中的所有元素都指向相同的引用,这没关系,所有 Piece 内容保持不变,它们只是在棋盘数组中移动)。>
谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。