⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aiwork1view.cpp

📁 两个人工智能小程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -