help.cpp

来自「滑块问题求解系统:利用深度优先搜索和广度优先搜索解决有趣的滑块问题求解系统。」· C++ 代码 · 共 118 行

CPP
118
字号
// Help.cpp : 实现文件
//

#include "stdafx.h"
#include "AI.h"
#include "Help.h"
#include ".\help.h"


// CHelp 对话框

IMPLEMENT_DYNAMIC(CHelp, CDialog)
CHelp::CHelp(CWnd* pParent /*=NULL*/)
	: CDialog(CHelp::IDD, pParent)
{
}

CHelp::~CHelp()
{
}

void CHelp::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(CHelp, CDialog)
	ON_BN_CLICKED(IDC_HELP_STATUS, OnBnClickedHelp)
	ON_BN_CLICKED(IDC_HELP_HAND, OnBnClickedHelp)
	ON_BN_CLICKED(IDC_HELP_SEARCH, OnBnClickedHelp)
	ON_BN_CLICKED(IDC_HELP_RESULT, OnBnClickedHelp)
	ON_BN_CLICKED(IDC_HELP_GRAPH, OnBnClickedHelp)
	ON_BN_CLICKED(IDC_HELP_COMPARE, OnBnClickedHelp)
END_MESSAGE_MAP()


// CHelp 消息处理程序

void CHelp::OnBnClickedHelp()
{
	// TODO: 在此添加控件通知处理程序代码
	int select[] = {
		IDC_HELP_STATUS,
		IDC_HELP_HAND,
		IDC_HELP_SEARCH, 
		IDC_HELP_RESULT, 
		IDC_HELP_GRAPH, 
		IDC_HELP_COMPARE,
	};
	static CString instroduction[sizeof(select) / sizeof(int)];

	if(instroduction[0] == ""){
		instroduction[0] = "一、默认状态:选择默认状态\r\n\r\n"
							"二、随机选择:让计算机随机选择状态,可选择是否随机初始状"
							"态、结束状态,以及是否避免生成无解状态\r\n\r\n"
							"三、手动设置:图片下方的复选框用来标明此图是否已在初始状"
							"态(前)或结束状态(后)中被选中,下方的数字用来在切换为"
							"其它非数字图片时标明图片的序号值。设置方法为点击图片按钮"
							",再在状态框里的具体位置单击,即可将图片放置其上,也可以"
							"在状态框中互换两个图片的位置\r\n\r\n"
							"PS:在没有选中手玩模式的情况下,可以随意调换图片位置,方法是"
							"点击状态图中的图片,再点击另一张图片按钮即可。\r\n另:随机图"
							"可能无解哦!";
		
		instroduction[1] = "必须选中“手玩模式”复选框才可以进入手玩模式,否则点击图片时"
							",将会交换两图片的位置(这是为了设置状态而用),在选中“手"
							"玩模式”之前,需要先设置好状态。\r\n进入手玩模式后将丢失先前搜"
							"索信息!\r\n移动图片时只需要单击空图旁边的图片,即可让图片向空"
							"图位置移动,如果想退回上一步,单击“上一步”按钮即可,相应"
							"地,也有“下一步”按钮,也可以选择恢复初始状态。移动时将指"
							"出当前所用的步数。";
							

		instroduction[2] = "让计算机帮你解决问题,可以尝试选择不同的搜索策略进行搜索,"
							"通过观察搜索结果比较不同搜索策略的不同以及优劣。\r\n"
							"本系统共提供八种算法(具体见搜索算法面板)。\r\n"
							"单击“开始搜索”按钮开始利用计算机找寻答案。因为本"
							"系统采用多线程编写,如果算法所用时间过长,也可以中途停止"
							"搜索(在搜索时,按钮将变为“停止搜索”)。";

		instroduction[3] = "点击“详细>>”按钮,可以看到搜索结果栏,在此栏中可以观察各"
							"种算法的搜索结果数据差别。";

		instroduction[4] = "在搜索有解或者手动出解的情况下,即可以生成解路径的状态转移图了。状态表示形式:\r\n\r\n"
							"   2  3\r\n\r\n"
							"1  4  5         ===========>           876541320\r\n\r\n"
							"6  7  8\r\n\r\n"
							"空图用0来表示\r\n"
							"见菜单->功能->生成状态图,初始状态时,该按钮无效。"
							"在手动模式下成功到达目标或者利用算法成功搜索到解决方案时"
							",该按钮将变成有效,点击可以观察状态的变化过程。";

		instroduction[5] = "见菜单->功能->横向评测。同时启动所有算法进行评比各项统计结果。";
	}

	int item = GetFocus()->GetDlgCtrlID();
	for(int i = 0; i < sizeof(select) / sizeof(int); ++i){
		if(item == select[i]){
			SetDlgItemText(IDC_RICHEDIT_INTRO, instroduction[i]);
			return;
		}
	}
}



BOOL CHelp::OnInitDialog()
{
	CDialog::OnInitDialog();

	// TODO:  在此添加额外的初始化
	GetDlgItem(IDC_HELP_STATUS)->SetFocus();
	( (CButton *) GetDlgItem(IDC_HELP_STATUS) )->SetCheck(TRUE);
	return TRUE;  // return TRUE unless you set the focus to a control
	// 异常: OCX 属性页应返回 FALSE
}

⌨️ 快捷键说明

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