📄 aiwork2view.cpp
字号:
// AIWork2View.cpp : implementation of the CAIWork2View class
//
#include "stdafx.h"
#include "AIWork2.h"
#include "AIWork2Doc.h"
#include "AIWork2View.h"
#include "SetDepth.h"
#include "SetEight.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAIWork2View
IMPLEMENT_DYNCREATE(CAIWork2View, CScrollView)
BEGIN_MESSAGE_MAP(CAIWork2View, CScrollView)
//{{AFX_MSG_MAP(CAIWork2View)
ON_COMMAND(ID_RESOLVE, OnResolve)
ON_COMMAND(ID_SETCLOSEDEPTH, OnSetclosedepth)
ON_COMMAND(ID_INITSTAT, OnInitstat)
ON_COMMAND(ID_HN_DN, OnHnDn)
ON_UPDATE_COMMAND_UI(ID_HN_DN, OnUpdateHnDn)
ON_COMMAND(ID_HN_WN, OnHnWn)
ON_UPDATE_COMMAND_UI(ID_HN_WN, OnUpdateHnWn)
ON_COMMAND(ID_HN_PN, OnHnPn)
ON_UPDATE_COMMAND_UI(ID_HN_PN, OnUpdateHnPn)
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CScrollView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CScrollView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAIWork2View construction/destruction
CAIWork2View::CAIWork2View()
{
// TODO: add construction code here
//初始状态
m_ptMethod=new CBaseMethod;
m_ptMethod->basematrix[0][0]=4;
m_ptMethod->basematrix[0][1]=2;
m_ptMethod->basematrix[0][2]=3;
m_ptMethod->basematrix[1][0]=0;
m_ptMethod->basematrix[1][1]=8;
m_ptMethod->basematrix[1][2]=5;
m_ptMethod->basematrix[2][0]=7;
m_ptMethod->basematrix[2][1]=1;
m_ptMethod->basematrix[2][2]=6;
//目标状态
m_ptMethod->destmatrix[0][0]=1;
m_ptMethod->destmatrix[0][1]=2;
m_ptMethod->destmatrix[0][2]=3;
m_ptMethod->destmatrix[1][0]=4;
m_ptMethod->destmatrix[1][1]=5;
m_ptMethod->destmatrix[1][2]=6;
m_ptMethod->destmatrix[2][0]=7;
m_ptMethod->destmatrix[2][1]=8;
m_ptMethod->destmatrix[2][2]=0;
WitchOne=1;
HitAgain=FALSE;
m_strTime=_T("");
}
CAIWork2View::~CAIWork2View()
{
if(m_ptMethod)
delete m_ptMethod;
}
BOOL CAIWork2View::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CScrollView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CAIWork2View drawing
void CAIWork2View::OnDraw(CDC* pDC)
{
CAIWork2Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
pDC->TextOut(400,20,"花费时间: "+m_strTime);
m_ptMethod->OnDraw(pDC);
}
/////////////////////////////////////////////////////////////////////////////
// CAIWork2View printing
BOOL CAIWork2View::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CAIWork2View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CAIWork2View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CAIWork2View diagnostics
#ifdef _DEBUG
void CAIWork2View::AssertValid() const
{
CScrollView::AssertValid();
}
void CAIWork2View::Dump(CDumpContext& dc) const
{
CScrollView::Dump(dc);
}
CAIWork2Doc* CAIWork2View::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAIWork2Doc)));
return (CAIWork2Doc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CAIWork2View message handlers
void CAIWork2View::OnResolve()
{
// TODO: Add your command handler code here
m_strTime=_T("");
if(!HitAgain)
{
int timecount=GetTickCount();//取初始时间
CClientDC dc(this);
dc.TextOut(500,0,"开始解题,请耐心等待...........");
m_ptMethod->SetWitchOne(WitchOne);
Invalidate();
if(m_ptMethod->OnResolve())
{
//将电脑花费的时间,评估的节点数格式化成字符串
m_strTime.Format("%d ms",GetTickCount()-timecount);
Invalidate(NULL);
}
else
m_strTime.Format("%d ms",GetTickCount()-timecount);
dc.TextOut(500,0," ");
}
else
MessageBox("以下已经为正确结果","警告");
HitAgain=TRUE;
}
void CAIWork2View::OnSetclosedepth()
{
// TODO: Add your command handler code here
CSetDepth depthdlg;
if(depthdlg.DoModal()==IDOK)
{
m_SearchDepth=depthdlg.m_iDepth;
m_ptMethod->SetDepth(m_SearchDepth);
HitAgain=FALSE;
m_ptMethod->IsSuccess=FALSE;
m_ptMethod->CanOutPut=FALSE;
m_ptMethod->SetWitchOne(WitchOne);
Invalidate();
}
}
void CAIWork2View::OnInitstat()
{
// TODO: Add your command handler code here
CSetEight dlg;
if(dlg.DoModal()==IDOK)
{
m_ptMethod->basematrix[0][0]=dlg.m_iOne;
m_ptMethod->basematrix[0][1]=dlg.m_iTwo;
m_ptMethod->basematrix[0][2]=dlg.m_iThree;
m_ptMethod->basematrix[1][0]=dlg.m_iFour;
m_ptMethod->basematrix[1][1]=dlg.m_iFive;
m_ptMethod->basematrix[1][2]=dlg.m_iSix;
m_ptMethod->basematrix[2][0]=dlg.m_iSeven;
m_ptMethod->basematrix[2][1]=dlg.m_iEight;
m_ptMethod->basematrix[2][2]=dlg.m_iZero;
HitAgain=FALSE;
m_ptMethod->IsSuccess=FALSE;
m_ptMethod->CanOutPut=FALSE;
m_ptMethod->SetWitchOne(WitchOne);
Invalidate();
}
}
void CAIWork2View::OnHnDn()
{
// TODO: Add your command handler code here
HitAgain=FALSE;
m_ptMethod->IsSuccess=FALSE;
m_ptMethod->CanOutPut=FALSE;
WitchOne=1;
m_ptMethod->SetWitchOne(WitchOne);
Invalidate();
}
void CAIWork2View::OnUpdateHnDn(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
if(WitchOne==1)
pCmdUI->SetCheck(1);
else
pCmdUI->SetCheck(0);
}
void CAIWork2View::OnHnWn()
{
// TODO: Add your command handler code here
HitAgain=FALSE;
m_ptMethod->IsSuccess=FALSE;
m_ptMethod->CanOutPut=FALSE;
WitchOne=2;
m_ptMethod->SetWitchOne(WitchOne);
Invalidate();
}
void CAIWork2View::OnUpdateHnWn(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
if(WitchOne==2)
pCmdUI->SetCheck(1);
else
pCmdUI->SetCheck(0);
}
void CAIWork2View::OnHnPn()
{
// TODO: Add your command handler code here
HitAgain=FALSE;
m_ptMethod->IsSuccess=FALSE;
m_ptMethod->CanOutPut=FALSE;
WitchOne=3;
m_ptMethod->SetWitchOne(WitchOne);
Invalidate();
}
void CAIWork2View::OnUpdateHnPn(CCmdUI* pCmdUI)
{
// TODO: Add your command update UI handler code here
if(WitchOne==3)
pCmdUI->SetCheck(1);
else
pCmdUI->SetCheck(0);
}
void CAIWork2View::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
CSize sizeTotal;
sizeTotal.cx=1000;
sizeTotal.cy=5000;
SetScrollSizes(MM_TEXT,sizeTotal);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -