为X,Y坐标; Y1 = 1; Y2 = 2; X1 = Tile1; X2 = Tile2; if(Tile1 > 3) { Y1 = 2; X1 = Tile1 - 3; } if(Tile1 > 6) { Y1 = 3; X1 = Tile1 - 6; } if(Tile2 > 3) { Y2 = 2; X2 = Tile2 - 3; } if(Tile2 > 6) { Y2 = 3; X2 = Tile2 - 6; } //为了确保距离值为正说,进行必要的换位处理; if(Y1 - Y2 < 0) { temp = Y1; Y1 = Y2; Y2 = temp; } if(X1 - X2 < 0) { temp = X1; X1 = X2; X2 = temp; } return ((Y1 - Y2) + (X1 - X2)); }
public: // 异常处理; class ERROR_ILLEGAL_MOVE{}; class ERROR_NO_MORE_DIRECTIONS{}; class ERROR_OUT_OF_BOUNDS{}; //用于heuristic函数;它代表了当前状态与前一状态的距离;这个数值越小越好。 int GetDepth() { return Depth; }
// CState类构造函数; CState() { Depth = 0; Grid[1] = 6; // for slower machines use 4 Grid[2] = 1; // for slower machines use 1 Grid[3] = 7; // for slower machines use 3 Grid[4]
|