📄 chesscalculator.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 + -