www.pudn.com > jiugong.zip > JiuG.h


// JiuG.h: interface for the CJiuG class. 
 
#if !defined(AFX_JIUG_H__A836D34F_3D4D_450C_BB2A_1412429F6451__INCLUDED_) 
#define AFX_JIUG_H__A836D34F_3D4D_450C_BB2A_1412429F6451__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#include //包含类CPtrList 
 
typedef struct JiuGongState{ 
	int curdistance;//当前的距离,从初始节点开始 
	int state[3][3]; 
	struct JiuGongState *prestate;//上一个节点的指针 
	struct JiuGongState *nextstate;//下一个节点的指针 
}JGState;//定义九宫结构 
 
class CJiuG   
{ 
public: 
	JGState StateInit;//初始状态 
	JGState StateObj;//目标状态 
	JGState StateCur;//当前状态 
 
	CPtrList OpenList;//Open表 
	CPtrList CloseList;//Close表 
	CPtrList ResultList;//保存结果 
	JGState *curstep; 
 
public: 
	int m_ndepth;//搜索深度 
	int ComputeJO(JGState *jo);//计算状态的奇偶性 
	CJiuG(); 
	virtual ~CJiuG(); 
	bool MoveLeft(JGState *src,JGState *result);//左移 
	bool MoveRight(JGState *src,JGState *result);//右移 
	bool MoveUp(JGState *src,JGState *result);//上移 
	bool MoveDown(JGState *src,JGState *result);//下移 
	bool Compare(JGState *src1,JGState *src2);//比较两个状态是否相等 
	int ComputeFn(JGState *cur,JGState *dest);//估价函数的计算,我们采用了Pn 
	bool Search();//用A*算法搜索最优解 
	void FreeList(CPtrList *list);//释放内存 
	void CopyJG(JGState *src,JGState *dest);//复制九宫 
}; 
 
#endif // !defined(AFX_JIUG_H__A836D34F_3D4D_450C_BB2A_1412429F6451__INCLUDED_)