📄 aiwork1view.cpp
字号:
// AIWork1View.cpp : implementation of the CAIWork1View class
//
#include "stdafx.h"
#include "AIWork1.h"
#include "AIWork1Doc.h"
#include "AIWork1View.h"
#include "ConfigDlg.h"
#include "EightSetDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAIWork1View
IMPLEMENT_DYNCREATE(CAIWork1View, CScrollView)
BEGIN_MESSAGE_MAP(CAIWork1View, CScrollView)
//{{AFX_MSG_MAP(CAIWork1View)
ON_COMMAND(ID_CONFIG, OnConfig)
ON_COMMAND(ID_EIGHT, OnEight)
ON_UPDATE_COMMAND_UI(ID_EIGHT, OnUpdateEight)
ON_COMMAND(ID_RESOLVE, OnResolve)
//}}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()
/////////////////////////////////////////////////////////////////////////////
// CAIWork1View construction/destruction
CAIWork1View::CAIWork1View()
{
// TODO: add construction code here
m_bIsEight=TRUE;
m_bIsFifteen=FALSE;
m_iDepth=20;
m_iLMatrix=3;
IsFinish=FALSE;
m_strBeginInfo="输入你要解决的问题。(步数限制20步)";
//初始化8数码数组
m_store[0][0]=matrix[0][0]=1;
m_store[0][1]=matrix[0][1]=2;
m_store[0][2]=matrix[0][2]=3;
m_store[1][0]=matrix[1][0]=4;
m_store[1][1]=matrix[1][1]=8;///要移动的点
m_store[1][2]=matrix[1][2]=5;
m_store[2][0]=matrix[2][0]=7;
m_store[2][1]=matrix[2][1]=0;
m_store[2][2]=matrix[2][2]=6;
//记录0的坐标
m_xZero=2;
m_yZero=1;
m_hitAgain=FALSE;
}
CAIWork1View::~CAIWork1View()
{
}
BOOL CAIWork1View::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CScrollView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CAIWork1View drawing
void CAIWork1View::OnDraw(CDC* pDC)
{
CAIWork1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
// 输出最后成功后的移动步骤
CPen *oldPen;
m_tableLU=CPoint(0,40);
m_tableRD=CPoint(90,130);
pDC->SetTextColor(RGB(10,20,222));
pDC->TextOut(0,0,m_strBeginInfo);
pDC->SetTextColor(RGB(0,0,0));
pDC->TextOut(0,20,m_strPathCount);
//画出表格,表示各个状态
CPen newPen(PS_SOLID,1,RGB(255,0,0));
oldPen=pDC->SelectObject(&newPen);
pDC->Rectangle(m_tableLU.x,m_tableLU.y,m_tableRD.x,m_tableRD.y);
pDC->MoveTo(m_tableLU.x+30,m_tableLU.y);
pDC->LineTo(m_tableLU.x+30,m_tableRD.y);
pDC->MoveTo(m_tableLU.x+60,m_tableRD.y);
pDC->LineTo(m_tableLU.x+60,m_tableLU.y);
pDC->MoveTo(m_tableLU.x,m_tableLU.y+30);
pDC->LineTo(m_tableRD.x,m_tableLU.y+30);
pDC->MoveTo(m_tableLU.x,m_tableLU.y+60);
pDC->LineTo(m_tableRD.x,m_tableLU.y+60);
m_strOutHelp.Format("%d",m_store[0][0]);
pDC->TextOut(m_tableLU.x+10,m_tableLU.y+8,m_strOutHelp);
m_strOutHelp.Format("%d",m_store[0][1]);
pDC->TextOut(m_tableLU.x+40,m_tableLU.y+8,m_strOutHelp);
m_strOutHelp.Format("%d",m_store[0][2]);
pDC->TextOut(m_tableLU.x+70,m_tableLU.y+8,m_strOutHelp);
m_strOutHelp.Format("%d",m_store[1][0]);
pDC->TextOut(m_tableLU.x+10,m_tableLU.y+38,m_strOutHelp);
m_strOutHelp.Format("%d",m_store[1][1]);
pDC->TextOut(m_tableLU.x+40,m_tableLU.y+38,m_strOutHelp);
m_strOutHelp.Format("%d",m_store[1][2]);
pDC->TextOut(m_tableLU.x+70,m_tableLU.y+38,m_strOutHelp);
m_strOutHelp.Format("%d",m_store[2][0]);
pDC->TextOut(m_tableLU.x+10,m_tableLU.y+68,m_strOutHelp);
m_strOutHelp.Format("%d",m_store[2][1]);
pDC->TextOut(m_tableLU.x+40,m_tableLU.y+68,m_strOutHelp);
m_strOutHelp.Format("%d",m_store[2][2]);
pDC->TextOut(m_tableLU.x+70,m_tableLU.y+68,m_strOutHelp);
pDC->SelectObject(oldPen);
if(IsFinish)
{
m_tableLU.x=m_tableLU.x+100;
m_tableRD.x=m_tableRD.x+100;
int xZero=m_xZero;
int yZero=m_yZero;
for(int i=1;i<m_dataList.Length();i++)
{
if(i==m_dataList.Length()-1)
pDC->SelectObject(newPen);
datastruct direct=m_dataList.IndexValue(i);
Direction wheretogo=(Direction)direct.direction;
pDC->Rectangle(m_tableLU.x,m_tableLU.y,m_tableRD.x,m_tableRD.y);
pDC->MoveTo(m_tableLU.x+30,m_tableLU.y);
pDC->LineTo(m_tableLU.x+30,m_tableRD.y);
pDC->MoveTo(m_tableLU.x+60,m_tableRD.y);
pDC->LineTo(m_tableLU.x+60,m_tableLU.y);
pDC->MoveTo(m_tableLU.x,m_tableLU.y+30);
pDC->LineTo(m_tableRD.x,m_tableLU.y+30);
pDC->MoveTo(m_tableLU.x,m_tableLU.y+60);
pDC->LineTo(m_tableRD.x,m_tableLU.y+60);
m_strOutHelp.Format("%d",direct.datakey[0][0]);
if(direct.datakey[0][0]==0)
{
pDC->SetTextColor(RGB(10,10,233));
pDC->TextOut(m_tableLU.x+10,m_tableLU.y+8,m_strOutHelp);
pDC->SetTextColor(RGB(0,0,0));
}
else
pDC->TextOut(m_tableLU.x+10,m_tableLU.y+8,m_strOutHelp);
m_strOutHelp.Format("%d",direct.datakey[0][1]);
if(direct.datakey[0][1]==0)
{
pDC->SetTextColor(RGB(10,10,233));
pDC->TextOut(m_tableLU.x+40,m_tableLU.y+8,m_strOutHelp);
pDC->SetTextColor(RGB(0,0,0));
}
else
pDC->TextOut(m_tableLU.x+40,m_tableLU.y+8,m_strOutHelp);
m_strOutHelp.Format("%d",direct.datakey[0][2]);
if(direct.datakey[0][2]==0)
{
pDC->SetTextColor(RGB(10,10,233));
pDC->TextOut(m_tableLU.x+70,m_tableLU.y+8,m_strOutHelp);
pDC->SetTextColor(RGB(0,0,0));
}
else
pDC->TextOut(m_tableLU.x+70,m_tableLU.y+8,m_strOutHelp);
m_strOutHelp.Format("%d",direct.datakey[1][0]);
if(direct.datakey[1][0]==0)
{
pDC->SetTextColor(RGB(10,10,233));
pDC->TextOut(m_tableLU.x+10,m_tableLU.y+38,m_strOutHelp);
pDC->SetTextColor(RGB(0,0,0));
}
else
pDC->TextOut(m_tableLU.x+10,m_tableLU.y+38,m_strOutHelp);
m_strOutHelp.Format("%d",direct.datakey[1][1]);
if(direct.datakey[1][1]==0)
{
pDC->SetTextColor(RGB(10,10,233));
pDC->TextOut(m_tableLU.x+40,m_tableLU.y+38,m_strOutHelp);
pDC->SetTextColor(RGB(0,0,0));
}
else
pDC->TextOut(m_tableLU.x+40,m_tableLU.y+38,m_strOutHelp);
m_strOutHelp.Format("%d",direct.datakey[1][2]);
if(direct.datakey[1][2]==0)
{
pDC->SetTextColor(RGB(10,10,233));
pDC->TextOut(m_tableLU.x+70,m_tableLU.y+38,m_strOutHelp);
pDC->SetTextColor(RGB(0,0,0));
}
else
pDC->TextOut(m_tableLU.x+70,m_tableLU.y+38,m_strOutHelp);
m_strOutHelp.Format("%d",direct.datakey[2][0]);
if(direct.datakey[2][0]==0)
{
pDC->SetTextColor(RGB(10,10,233));
pDC->TextOut(m_tableLU.x+10,m_tableLU.y+68,m_strOutHelp);
pDC->SetTextColor(RGB(0,0,0));
}
else
pDC->TextOut(m_tableLU.x+10,m_tableLU.y+68,m_strOutHelp);
m_strOutHelp.Format("%d",direct.datakey[2][1]);
if(direct.datakey[2][1]==0)
{
pDC->SetTextColor(RGB(10,10,233));
pDC->TextOut(m_tableLU.x+40,m_tableLU.y+68,m_strOutHelp);
pDC->SetTextColor(RGB(0,0,0));
}
else
pDC->TextOut(m_tableLU.x+40,m_tableLU.y+68,m_strOutHelp);
m_strOutHelp.Format("%d",direct.datakey[2][2]);
if(direct.datakey[2][2]==0)
{
pDC->SetTextColor(RGB(10,10,233));
pDC->TextOut(m_tableLU.x+70,m_tableLU.y+68,m_strOutHelp);
pDC->SetTextColor(RGB(0,0,0));
}
else
pDC->TextOut(m_tableLU.x+70,m_tableLU.y+68,m_strOutHelp);
m_tableLU.x=m_tableLU.x+100;
m_tableRD.x=m_tableRD.x+100;
if(m_tableLU.x>800)
{
m_tableLU.x=0;
m_tableLU.y=m_tableLU.y+100;
m_tableRD.x=90;
m_tableRD.y=m_tableRD.y+100;
}
pDC->SelectObject(oldPen);
}
}
}
/////////////////////////////////////////////////////////////////////////////
// CAIWork1View printing
BOOL CAIWork1View::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CAIWork1View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CAIWork1View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CAIWork1View diagnostics
#ifdef _DEBUG
void CAIWork1View::AssertValid() const
{
CScrollView::AssertValid();
}
void CAIWork1View::Dump(CDumpContext& dc) const
{
CScrollView::Dump(dc);
}
CAIWork1Doc* CAIWork1View::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAIWork1Doc)));
return (CAIWork1Doc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CAIWork1View message handlers
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -