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 + -
显示快捷键?