資源簡介
國際象棋的棋盤有8×8=64個(gè)格子,給它們規(guī)定坐標(biāo)(1,1)到(8,8)。馬在這64個(gè)格子的某一個(gè)格子上,它的跳動(dòng)規(guī)則是:如果它現(xiàn)在在(x,y)位置,它下一步可以跳到(x±1,y±2)或(x±2,y±1)(所有的“±”之間沒有相關(guān)性),一般來說它下一步可以有八種跳法。但是它不能跳出這64個(gè)格子。
設(shè)計(jì)算法使它不管從哪出發(fā)都可以跳遍所有的格子(每個(gè)格子只能路過一次)最后回到起點(diǎn)。
基本要求:(80分)
合理設(shè)計(jì)界面,自行設(shè)計(jì)國際象棋棋盤,用鼠標(biāo)選擇馬的起始位置,起始位置選定后,按“開始”按鈕演示馬的每一步行走路線。棋盤和馬的顯示盡量美觀逼真。功能菜單或按鈕自行設(shè)計(jì),以合理為目的。
擴(kuò)展要求:(15分)
對(duì)算法進(jìn)行優(yōu)化,根據(jù)j.c.Warnsdorff規(guī)則設(shè)計(jì)算法,該規(guī)則是在所有可跳的方格中,馬只可能走這樣一個(gè)方格:從該方格出發(fā),馬能跳的方格數(shù)為最少;如果可跳的方格數(shù)相等,則從當(dāng)前位置看,方格序號(hào)小的優(yōu)先。
VS2017開發(fā)
代碼片段和文件信息
//?Knight.cpp?:?定義應(yīng)用程序的類行為。
//
#include?“stdafx.h“
#include?“afxwinappex.h“
#include?“afxdialogex.h“
#include?“Knight.h“
#include?“MainFrm.h“
#include?“KnightDoc.h“
#include?“KnightView.h“
#ifdef?_DEBUG
#define?new?DEBUG_NEW
#endif
//?CKnightApp
BEGIN_MESSAGE_MAP(CKnightApp?CWinApp)
ON_COMMAND(ID_APP_ABOUT?&CKnightApp::OnAppAbout)
//?基于文件的標(biāo)準(zhǔn)文檔命令
ON_COMMAND(ID_FILE_NEW?&CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN?&CWinApp::OnFileOpen)
//?標(biāo)準(zhǔn)打印設(shè)置命令
ON_COMMAND(ID_FILE_PRINT_SETUP?&CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()
//?CKnightApp?構(gòu)造
CKnightApp::CKnightApp()
{
//?支持重新啟動(dòng)管理器
m_dwRestartManagerSupportFlags?=?AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS;
#ifdef?_MANAGED
//?如果應(yīng)用程序是利用公共語言運(yùn)行時(shí)支持(/clr)構(gòu)建的,則:
//?????1)?必須有此附加設(shè)置,“重新啟動(dòng)管理器”支持才能正常工作。
//?????2)?在您的項(xiàng)目中,您必須按照生成順序向?System.Windows.Forms?添加引用。
System::Windows::Forms::Application::SetUnhandledExceptionMode(System::Windows::Forms::UnhandledExceptionMode::ThrowException);
#endif
//?TODO:?將以下應(yīng)用程序?ID?字符串替換為唯一的?ID?字符串;建議的字符串格式
//為?CompanyName.ProductName.SubProduct.VersionInformation
SetAppID(_T(“Knight.AppID.NoVersion“));
//?TODO:?在此處添加構(gòu)造代碼,
//?將所有重要的初始化放置在?InitInstance?中
}
//?唯一的一個(gè)?CKnightApp?對(duì)象
CKnightApp?theApp;
//?CKnightApp?初始化
BOOL?CKnightApp::InitInstance()
{
//?如果一個(gè)運(yùn)行在?Windows?XP?上的應(yīng)用程序清單指定要
//?使用?ComCtl32.dll?版本?6?或更高版本來啟用可視化方式,
//則需要?InitCommonControlsEx()。否則,將無法創(chuàng)建窗口。
INITCOMMONCONTROLSEX?InitCtrls;
InitCtrls.dwSize?=?sizeof(InitCtrls);
//?將它設(shè)置為包括所有要在應(yīng)用程序中使用的
//?公共控件類。
InitCtrls.dwICC?=?ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
//?初始化?OLE?庫
if?(!AfxOleInit())
{
AfxMessageBox(IDP_OLE_INIT_FAILED);
return?FALSE;
}
AfxEnableControlContainer();
EnableTaskbarInteraction(FALSE);
//?使用?RichEdit?控件需要??AfxInitRichEdit2()
//?AfxInitRichEdit2();
//?標(biāo)準(zhǔn)初始化
//?如果未使用這些功能并希望減小
//?最終可執(zhí)行文件的大小,則應(yīng)移除下列
//?不需要的特定初始化例程
//?更改用于存儲(chǔ)設(shè)置的注冊(cè)表項(xiàng)
//?TODO:?應(yīng)適當(dāng)修改該字符串,
//?例如修改為公司或組織名
SetRegistryKey(_T(“應(yīng)用程序向?qū)傻谋镜貞?yīng)用程序“));
LoadStdProfileSettings(4);??//?加載標(biāo)準(zhǔn)?INI?文件選項(xiàng)(包括?MRU)
//?注冊(cè)應(yīng)用程序的文檔模板。文檔模板
//?將用作文檔、框架窗口和視圖之間的連接
CSingleDocTemplate*?pDocTemplate;
pDocTemplate?=?new?CSingleDocTemplate(
IDR_MAINframe
RUNTIME_CLASS(CKnightDoc)
RUNTIME_CLASS(CMainframe)???????//?主?SDI?框架窗口
RUNTIME_CLASS(CKnightView));
if?(!pDocTemplate)
return?FALSE;
AddDocTemplate(pDocTemplate);
//?分析標(biāo)準(zhǔn)?shell?命令、DDE、打開文件操作的命令行
CCommandLineInfo?cmdInfo;
ParseCommandLine(cmdInfo);
//?調(diào)度在命令行中指定的命令。如果
//?用?/RegServer、/Register、/Unregserver?或?/Unregister?啟動(dòng)應(yīng)用程序,則返回?FALSE。
if?(!ProcessShellCommand(cmdInfo))
return?FALSE;
//?唯一的一個(gè)窗口已初始化,因此顯示它并對(duì)其進(jìn)行更新
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
//?僅當(dāng)具有后綴時(shí)才調(diào)用?DragAcceptFiles
//??在?SDI?應(yīng)用程序中,這應(yīng)在?ProcessShellCommand?之后發(fā)生
return?TRUE;
}
int?CKnightApp::ExitInstance()
{
//TODO:?處理可能已添加的附加資源
AfxOleTerm(FALSE);
return?CWinA
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????679??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\Knight.log
?????文件??????48615??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\Knight.obj
?????文件???54525952??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\Knight.pch
?????文件????9021920??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\Knight.res
?????文件???????4602??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\Knight.tlog\CL.command.1.tlog
?????文件?????111328??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\Knight.tlog\CL.read.1.tlog
?????文件???????3302??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\Knight.tlog\CL.write.1.tlog
?????文件????????230??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\Knight.tlog\Knight.lastbuildstate
?????文件???????2148??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\Knight.tlog\li
?????文件???????7684??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\Knight.tlog\li
?????文件???????1224??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\Knight.tlog\li
?????文件????????374??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\Knight.tlog\rc.command.1.tlog
?????文件???????4642??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\Knight.tlog\rc.read.1.tlog
?????文件????????242??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\Knight.tlog\rc.write.1.tlog
?????文件??????94432??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\KnightDoc.obj
?????文件?????122646??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\KnightView.obj
?????文件??????75051??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\MainFrm.obj
?????文件??????63033??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\Qipan.obj
?????文件?????930443??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\stdafx.obj
?????文件????2583552??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\vc141.idb
?????文件????6787072??2017-07-15?10:03??國際象棋終\國際象棋騎士遍歷\Knight\Debug\vc141.pdb
?????文件????9070452??2017-07-12?13:37??國際象棋終\國際象棋騎士遍歷\Knight\Knight.aps
?????文件???????4238??2017-07-12?14:09??國際象棋終\國際象棋騎士遍歷\Knight\Knight.cpp
?????文件????????502??2017-07-12?14:09??國際象棋終\國際象棋騎士遍歷\Knight\Knight.h
?????文件??????22798??2017-07-12?13:37??國際象棋終\國際象棋騎士遍歷\Knight\Knight.rc
?????文件???????6644??2017-07-12?13:24??國際象棋終\國際象棋騎士遍歷\Knight\Knight.vcxproj
?????文件???????3325??2017-07-12?13:24??國際象棋終\國際象棋騎士遍歷\Knight\Knight.vcxproj.filters
?????文件????????228??2017-07-12?11:11??國際象棋終\國際象棋騎士遍歷\Knight\Knight.vcxproj.user
?????文件???????2510??2017-07-12?14:09??國際象棋終\國際象棋騎士遍歷\Knight\KnightDoc.cpp
?????文件????????845??2017-07-12?14:09??國際象棋終\國際象棋騎士遍歷\Knight\KnightDoc.h
............此處省略33個(gè)文件信息
評(píng)論
共有 條評(píng)論