cninegrid.h

来自「利用Visual c++编程思想方法实现九宫问题(八数码)求解过程动态演示的程序」· C头文件 代码 · 共 66 行

H
66
字号
#include <time.h>
#include <vector>
#include <algorithm>

#define WM_UPDATE WM_USER + 1021

using namespace std;
class CNineGrid
{
public:
	struct PlaceList
    {
		DWORD		Place;
		PlaceList*	Left;
		PlaceList*	Right;
    };
	struct Scanbuf
	{
		DWORD Place;
		int ScanID;
	};
	struct PathList
	{
		unsigned char Path[9];
	};

private:
	PlaceList *m_pPlaceList;
	Scanbuf *m_pScanbuf;
	RECT m_rResetButton;
	RECT m_rAutoButton;

public:
	int m_iPathsize;
	clock_t m_iTime;
	UINT m_iStepCount;
	unsigned char m_iTargetChess[9];
	unsigned char m_iChess[9];
	HWND m_hClientWin;
	PathList *m_pPathList;
	bool m_bAutoRun;
	CEdit *m_pEdit;
	bool m_bCannDynamic;

private:
	inline bool AddTree(DWORD place , PlaceList*& parent);
	void FreeTree(PlaceList*& parent);
	inline void ArrayToDword(unsigned char *array , DWORD & data);
	inline void DwordToArray(DWORD data , unsigned char *array);
	inline bool MoveChess(unsigned char *array , int way);
	bool EstimateUncoil(unsigned char *array);
	void GetPath(UINT depth);
	
public:
	void Dynamic(int nStart , int nEnd , int nLine);
	void Init(CEdit *pEdit){m_pEdit = pEdit;}
	void MoveChess(int way);
	bool ComputeFeel();
	void ActiveShow(HWND hView);
	void Reset();
	bool OnButton(POINT pnt , HWND hView);
	
public:
	CNineGrid();
	~CNineGrid();
};

⌨️ 快捷键说明

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