⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chesscalculator.h

📁 是象棋演示的设计程序
💻 H
字号:
// ChessCalculator.h: interface for the CChessCalculator class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_CHESSCALCULATOR_H__DB29DD10_B2FE_46A2_8024_AF51C8C0582D__INCLUDED_)
#define AFX_CHESSCALCULATOR_H__DB29DD10_B2FE_46A2_8024_AF51C8C0582D__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//###########################################################################
//搜索状态
//###########################################################################
typedef enum __Status
{
	WAITING,   //等待开始搜索;
	WORKING,   //正在搜索; 
    SUCCESS,   //搜索成功;
	FAILED,    //搜索失败;

}Status;
//###########################################################################
//棋盘上的位置
//###########################################################################
typedef struct tagLocation
{
	int x;     //棋盘格的x坐标;
	int y;     //棋盘格的y坐标;
}Location;
//###########################################################################
//棋盘搜索类
//###########################################################################
class CChessCalculator  
{
public:
	CChessCalculator();
	virtual ~CChessCalculator();
	
public:
	//取得当前已经搜索的解空间大小
	int    GetSearchSpace();  
	//设置棋盘的大小               
	void   SetSize( int width , int height );
	//设置棋子的起始位置 
	void   SetStartLocation( int locOnX , int locOnY ); 
	//开始搜索   
	void   StartSearch();     
	//图形化显示结果  
	void   DisplayResult( CDC* pDC );
	//取得搜索结果
	Status GetCalculateResult();  
    //设置显示结果模式
	void   SetShowDelay( bool delay );
		
private:
	
    bool  Search( Location curLoc ); //开始搜索
    int   GetWidth();                //取得棋盘的宽度  	     
	int   GetHeight();               //取得棋盘的高度 

	//在记录表中查找指定的元素
	bool  FindInTable( Location loc , int n ); 
	//将指定的元素填写入记录表中          
	void  MarkInTable( Location newLoc , Location curLoc );
	//检查新的位置是否合法
	bool  isValide( Location& loc ); 
	//搜索是否结束                      
	bool  isSuccess();  
	//取得从当前位置出发可以到达的下一个新位置
	Location         
	      GetSubTreeNode( Location curLoc , int i );
	
private:
	int   m_saveHeight; //上一次棋盘的高度
	int   m_saveWidth;  //上一次棋盘的宽度
	bool  m_showDelay;  //是否延时显示搜索结果
	bool  m_nextTime;   //是否已经查看过搜索结果
	bool  m_end;        //搜索是否结束
	bool  m_start;      //搜索是否开始
	int   m_width;      //棋盘宽度
	int   m_height;     //棋盘高度

	int   m_index;      //当前走子记录表的大小     
	long  m_complex;    //当前搜索解空间的大小
	bool  m_result;     //搜索结果	

	Location   m_curLoc;      //棋子当前位置
	Location   m_newLoc;      //棋子的下一个新位置
	
	int**      m_chessTable;  //棋盘状态表,标记指定位置是否被搜索过
	Location*  m_recordTable; //走子记录表	
};

#endif // !defined(AFX_CHESSCALCULATOR_H__DB29DD10_B2FE_46A2_8024_AF51C8C0582D__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -