?? chesscalculator.h
字號(hào):
// 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
//###########################################################################
//搜索狀態(tài)
//###########################################################################
typedef enum __Status
{
WAITING, //等待開(kāi)始搜索;
WORKING, //正在搜索;
SUCCESS, //搜索成功;
FAILED, //搜索失敗;
}Status;
//###########################################################################
//棋盤(pán)上的位置
//###########################################################################
typedef struct tagLocation
{
int x; //棋盤(pán)格的x坐標(biāo);
int y; //棋盤(pán)格的y坐標(biāo);
}Location;
//###########################################################################
//棋盤(pán)搜索類
//###########################################################################
class CChessCalculator
{
public:
CChessCalculator();
virtual ~CChessCalculator();
public:
//取得當(dāng)前已經(jīng)搜索的解空間大小
int GetSearchSpace();
//設(shè)置棋盤(pán)的大小
void SetSize( int width , int height );
//設(shè)置棋子的起始位置
void SetStartLocation( int locOnX , int locOnY );
//開(kāi)始搜索
void StartSearch();
//圖形化顯示結(jié)果
void DisplayResult( CDC* pDC );
//取得搜索結(jié)果
Status GetCalculateResult();
//設(shè)置顯示結(jié)果模式
void SetShowDelay( bool delay );
private:
bool Search( Location curLoc ); //開(kāi)始搜索
int GetWidth(); //取得棋盤(pán)的寬度
int GetHeight(); //取得棋盤(pán)的高度
//在記錄表中查找指定的元素
bool FindInTable( Location loc , int n );
//將指定的元素填寫(xiě)入記錄表中
void MarkInTable( Location newLoc , Location curLoc );
//檢查新的位置是否合法
bool isValide( Location& loc );
//搜索是否結(jié)束
bool isSuccess();
//取得從當(dāng)前位置出發(fā)可以到達(dá)的下一個(gè)新位置
Location
GetSubTreeNode( Location curLoc , int i );
private:
int m_saveHeight; //上一次棋盤(pán)的高度
int m_saveWidth; //上一次棋盤(pán)的寬度
bool m_showDelay; //是否延時(shí)顯示搜索結(jié)果
bool m_nextTime; //是否已經(jīng)查看過(guò)搜索結(jié)果
bool m_end; //搜索是否結(jié)束
bool m_start; //搜索是否開(kāi)始
int m_width; //棋盤(pán)寬度
int m_height; //棋盤(pán)高度
int m_index; //當(dāng)前走子記錄表的大小
long m_complex; //當(dāng)前搜索解空間的大小
bool m_result; //搜索結(jié)果
Location m_curLoc; //棋子當(dāng)前位置
Location m_newLoc; //棋子的下一個(gè)新位置
int** m_chessTable; //棋盤(pán)狀態(tài)表,標(biāo)記指定位置是否被搜索過(guò)
Location* m_recordTable; //走子記錄表
};
#endif // !defined(AFX_CHESSCALCULATOR_H__DB29DD10_B2FE_46A2_8024_AF51C8C0582D__INCLUDED_)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -