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

📄 aidlg.h

📁 滑块问题求解系统:利用深度优先搜索和广度优先搜索解决有趣的滑块问题求解系统。
💻 H
字号:
// AIDlg.h : 头文件
//

#pragma once

#include "atltypes.h"
#include "afxwin.h"
#include "afxcmn.h"
#include "searcher.h"
#include "dfs.h"
#include "bdfs.h"
#include "idfs.h"
#include "bfs.h"
#include "tbfs.h"
#include "astar1.h"
#include "astar2.h"
#include "ida.h"
#include "parameter.h"
#include "graph.h"
#include "help.h"
#include "compare.h"
#include <vector>

//#define TEST

#ifdef TEST
#include <cstdlib>
#endif

// CAIDlg 对话框
class CAIDlg : public CDialog
{
// 构造
public:
	CAIDlg(CWnd* pParent = NULL);	// 标准构造函数

// 对话框数据
	enum { IDD = IDD_AI_DIALOG };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持


// 实现
protected:
	HICON m_hIcon;

	// 生成的消息映射函数
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnBnClickedButtonIntroduction();
public:
	const static int NUM = 9;
	CBitmap m_bitmap[NUM];    //位图信息
	CButton m_init[NUM], m_end[NUM], m_hand[NUM];  //状态按钮
	CRect rectLarge;
	CRect rectShow;
	CRect rectRight;
	CRect rectDown;
public:
	afx_msg void OnBnClickedButtonHand();
private:
	void changeBitmap(CButton [], CButton [], int [], int [], int ); //改变图片函数
public:		
	CParameter set;       //参数设置窗口
	int m_heuristic;		// 启发函数系数
	int m_maxstep;    //有界深度优先函数界限
	int m_sleep;      //自动演示延迟时间(ms)
	CButton m_random_begin;   //是否随机初始状态
	CButton m_random_end;     //是否随机结束状态
	bool m_byhand;            //是否手动玩
	int m_selectval;	     //此值用来选择状态图片
	int pos_begin[NUM], pos_end[NUM];   //图片所在位置
	int pos_begin_return[NUM], pos_end_return[NUM];   //状态反向映射图片位置
	CButton select_begin[NUM], select_end[NUM];    //标记图片是否被选择
	bool gamestart;   //是否求解中
	std::vector<int> path;   //用于保存路径
	int top;                 //指示路径中的当前结点
	int nowstatus, laststatus;   //初始、结束状态
public:	
	afx_msg void OnBnClickedHand();	
	afx_msg void OnBnClickedEnd();	
	afx_msg void OnBnClickedInit();	
	afx_msg void OnBnClickedCheckHand();
	afx_msg void OnBnClickedButtonRandom();
public:
	CButton prevstep;    //上一步
	CButton nextstep;    //下一步
	CButton recover;     //恢复状态
	CButton display;     //自动演示
public:
	BOOL statusReady(void);
	int getStatus(int pos_return[]);
	void SetStatus(CButton button[], CButton select[], int pos[], int pos_return[], int status);

public:
	//各种搜索算法
	DFS dfs;
	BDFS bdfs;
	IDFS idfs;
	BFS bfs;
	TBFS tbfs;
	ASTAR1 astar1;
	ASTAR2 astar2;
	IDA ida;
	searcher *search;
	int ans;  //搜索结果
	enum{TYPE_DFS = 0, TYPE_BDFS, TYPE_BFS, TYPE_TBFS, TYPE_ASTAR1, TYPE_ASTAR2, TYPE_IDFS, TYPE_IDA} search_type;
	int stop;  //用于终止线程
	
public:
#ifdef TEST
	void test();
#endif
	afx_msg void OnBnClickedSearchType();
	void SetInstroduction();	
	afx_msg void OnBnClickedButtonBegin();

	void move(int pos);
	afx_msg void OnBnClickedButtonNext();
	afx_msg void OnBnClickedButtonPrev();
	afx_msg void OnBnClickedButtonDefault();
	afx_msg void OnBnClickedButtonRecover();

	afx_msg void OnBnClickedButtonAuto();
	void loadpicture(int start);
	afx_msg void OnAbout();
	afx_msg void OnGirl();
	void changeimage(int id);
	afx_msg void OnDigits();
	void SetNowstep(int step);
	afx_msg void SetParameter();
	afx_msg void OnIco();
	afx_msg void OnCreate();
	afx_msg void OnHelp();
	afx_msg void OnCompare();
};

⌨️ 快捷键说明

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