亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? eightnumberview.cpp

?? 人工智能中的八數(shù)碼難題,人工智能中的八數(shù)碼難題
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
// EightNumberView.cpp : implementation of the CEightNumberView class
//

#include "stdafx.h"
#include "EightNumber.h"

#include "EightNumberDoc.h"
#include "EightNumberView.h"

#include "ExplainGame.h"
#include "EditDlg.h"
#include "MainFrm.h"
//#include "AboutDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

int di[4]={0,-1,1,0};
int dj[4]={-1,0,0,1};
//int zeroi,zeroj;
/////////////////////////////////////////////////////////////////////////////
// CEightNumberView
UINT MultiThread(LPVOID param);

IMPLEMENT_DYNCREATE(CEightNumberView, CFormView)

BEGIN_MESSAGE_MAP(CEightNumberView, CFormView)
	//{{AFX_MSG_MAP(CEightNumberView)
	ON_WM_PAINT()
	ON_BN_CLICKED(IDC_BUTTON_STEPRUN, OnButtonSteprun)
	ON_BN_CLICKED(IDC_BUTTON_RUN, OnButtonRun)
	ON_WM_TIMER()
	ON_WM_CANCELMODE()
	ON_BN_CLICKED(IDC_BUTTON_ONOK, OnButtonOnok)
	ON_WM_LBUTTONDOWN()
	ON_WM_KEYDOWN()
	ON_BN_CLICKED(IDC_BUTTON_START, OnButtonStart)
	ON_BN_CLICKED(IDC_BUTTON_EXPLAIN, OnButtonExplain)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CFormView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CFormView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEightNumberView construction/destruction

CEightNumberView::CEightNumberView()
	: CFormView(CEightNumberView::IDD)
{
	//{{AFX_DATA_INIT(CEightNumberView)
	//}}AFX_DATA_INIT
	// TODO: add construction code here
	start[0][0]=2;
	start[0][1]=8;
	start[0][2]=3;
	start[1][0]=1;
	start[1][1]=0;
    start[1][2]=4;
	start[2][0]=7;
	start[2][1]=6;
	start[2][2]=5;



    goal[0][0]=1;
	goal[0][1]=2;
	goal[0][2]=3;
	goal[1][0]=8;
	goal[1][1]=0;
	goal[1][2]=4;
	goal[2][0]=7;
	goal[2][1]=6;
	goal[2][2]=5;
	
	
	

	//totalcount=0;
	
	cellwidth=160;
	cellheight=160;
    ni=1;
	nj=1;
    depth=0;
	//open=1;
	//closed=0;
//	k=0;
	count=-1;
    AutoPlay=false;

	for (int i=0; i<3; i++)
		for (int j=0; j<3; j++)
		{
			zerosite.ch[i][j]=start[i][j];
			if (start[i][j]==0)
			{
             zerosite.si=i;
			 zerosite.sj=j;
			}
		}
     	
   m_pThread=NULL;
}

CEightNumberView::~CEightNumberView()
{
	//DeleteObject(bitmap);
	//for (int i=0; i<3; i++)
     //for (int j=0; j<3; j++)
         DeleteObject(bitmap);
		// DeleteObject(map);

}

void CEightNumberView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEightNumberView)
	DDX_Control(pDX, IDC_BUTTON_EXPLAIN, m_Explain);
	DDX_Control(pDX, IDC_STATIC_SHOWSTATE, m_ShowState);
	DDX_Control(pDX, IDC_BUTTON_START, m_Start);
	DDX_Control(pDX, IDC_BUTTON_ONOK, m_OnOK);
	DDX_Control(pDX, IDC_BUTTON_STEPRUN, m_SepRun);
	DDX_Control(pDX, IDC_BUTTON_RUN, m_RunToStop);
	//}}AFX_DATA_MAP
}

BOOL CEightNumberView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CFormView::PreCreateWindow(cs);
}

void CEightNumberView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();
    //GetRand();
   
	//m_pThread=AfxBeginThread(MultiThread,0);
	Run();
    if (ftot)
	{
     m_SepRun.EnableWindow(TRUE);
	 m_RunToStop.EnableWindow(TRUE);
     m_ShowState.SetWindowText(String);
	}
     else
	 {
       m_SepRun.EnableWindow(FALSE);
	   m_RunToStop.EnableWindow(FALSE);
	   m_ShowState.SetWindowText("初始化失敗!非常遺憾此狀態(tài)無(wú)解\n\n   禁止使用自動(dòng)運(yùn)行和單步運(yùn)行\(zhòng)n\n      只能使用鼠標(biāo)或鍵盤(pán)方向鍵移動(dòng)");
	 }
   
    //m_ShowState.EnableWindow(FALSE);
}

void CEightNumberView::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	AfxGetMainWnd()->SetWindowText("八數(shù)碼游戲[作者:李少輝]");
	// TODO: Add your message handler code here
      //ItoBitmap();
	  //DrawStation();
	  /*for (int i=0;i<3; i++)
		  for (int j=0; j<3; j++)
		  {
             temp.si=i;
			 temp.sj=j;
			 drawd(temp,1);
		  }*/
	int i,j;
	  for (i=0; i<3; i++)
		  for ( j=0; j<3; j++)
		  {
			  drawd(i,j,start[j][i]);
		  }
	  DrawGraphics();
	  DrawStoA();

	  //目標(biāo)狀態(tài)
    CPen newPen,*oldPen;
	newPen.CreatePen(PS_SOLID,3,RGB(128,0,0));
	oldPen=dc.SelectObject(&newPen); 
	for(i=0;i<=3;i++)
	{
		dc.MoveTo(540+240,40+40*i);
		dc.LineTo(540+360,40+40*i);
	}
	for(j=0;j<=3;j++)
	{
		dc.MoveTo(540+240+40*j,40);
		dc.LineTo(540+240+40*j,160);
	}
	CFont newFont,*oldFont;
	newFont.CreateFont(20,20,0,0,700,FALSE,FALSE,FALSE,ANSI_CHARSET,
		OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,PROOF_QUALITY,FF_ROMAN,"Times New Roman");
	oldFont=dc.SelectObject(&newFont);
	dc.SetBkColor(RGB(212,208,200));
	CString str;
	//顯示目標(biāo)狀態(tài)
	for(i=0;i<3;i++)
		for(j=0;j<3;j++)
		{
			str.Format("%i",goal[i][j]);
			dc.TextOut(540+240+40*j+10,40+40*i+10,str);
			
		}
	newPen.DeleteObject();
	newFont.DeleteObject();
	dc.SelectObject(oldPen);
	dc.SelectObject(oldFont);
	// Do not call CFormView::OnPaint() for painting messages
}

/////////////////////////////////////////////////////////////////////////////
// CEightNumberView printing

BOOL CEightNumberView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CEightNumberView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CEightNumberView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

void CEightNumberView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
{
	// TODO: add customized printing code here
}

/////////////////////////////////////////////////////////////////////////////
// CEightNumberView diagnostics

#ifdef _DEBUG
void CEightNumberView::AssertValid() const
{
	CFormView::AssertValid();
}

void CEightNumberView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CEightNumberDoc* CEightNumberView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CEightNumberDoc)));
	return (CEightNumberDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CEightNumberView message handlers

BOOL CEightNumberView::Dupe(struct record a, struct record b)//檢查是否與已有狀態(tài)重復(fù)
{
   BOOL buf=TRUE;
	for(int i=0;i<3;i++)
		for(int j=0;j<3;j++)
			if(a.ch[i][j]!=b.ch[i][j])
				buf=FALSE;
	return buf;
}

BOOL CEightNumberView::Check(int k)//檢查空格向第k個(gè)方向移動(dòng)是否出棋盤(pán)
{
    BOOL check;
	newnode.ni=temp.si+di[k];
	newnode.nj=temp.sj+dj[k];
	if(newnode.ni>=0 && newnode.ni<=2 && newnode.nj>=0 && newnode.nj<=2)
		check=TRUE;
	else
	{
		check=FALSE;
		newnode.ni=newnode.ni-di[k];
		newnode.nj=newnode.nj-dj[k];
	}
	return check;
}

BOOL CEightNumberView::Goals(struct record g)//檢查是否為目標(biāo)
{
	BOOL gl=TRUE;
	for(int i=0;i<3;i++)
		for(int j=0;j<3;j++)
		{
			if(g.ch[i][j]!=goal[i][j])
				gl=FALSE;
		}
	return gl;

}

void CEightNumberView::Run()
{
    int preopen;
	m_SepRun.EnableWindow(FALSE);
	m_RunToStop.EnableWindow(FALSE);
	//String=""; 
	open=1;
	closed=0;
	CString str;
	BOOL tt=TRUE;
	ftot=false;
	for(int i=0;i<3;i++)
		for(int j=0;j<3;j++)
			data[1].ch[i][j]=start[i][j];
	data[1].si=ni;
	data[1].sj=nj;
//	CString ss;
//	ss.Format("%i",data[1].si);
//	MessageBox(ss);
	data[1].pnt=0;
	data[1].dep=0;
	while(open>closed && tt && open<100000)
	{
		closed=closed+1;   //出隊(duì)一個(gè)元素
		temp=data[closed];
		depth=temp.dep;
		newnode=temp;
		for(k=0;k<=3;k++)
		{
			if(Check(k))
			{
				open=open+1;
				data[open]=newnode;
				//原空格賦新位置的值,新空格置為零
				data[open].ch[ data[open].si ][ data[open].sj ]=data[open].ch[ data[open].ni ][ data[open].nj ];
				data[open].ch[ data[open].ni ][ data[open].nj ]=0;
				//新空格的位置賦給原空格
				data[open].si=data[open].ni;
				data[open].sj=data[open].nj;

				data[open].pnt=closed;
				data[open].dep=depth+1;
			}
            /*if (open>10000)
			{
				MessageBox("內(nèi)存不足,或本組數(shù)據(jù)不能夠到達(dá)目標(biāo)狀態(tài)\n\n     可以使用鼠標(biāo)進(jìn)行移動(dòng)\n\n  要重新開(kāi)始,請(qǐng)單擊‘開(kāi)始游戲’","初始化失敗",MB_OK|MB_ICONINFORMATION);
				//MessageBox("恭喜你,你已贏得這局,’","八數(shù)碼游戲",MB_OK|MB_ICONINFORMATION);
				exit(1);
				//continue;
				//goto failed;
			}*/
			preopen=open-1;
			struct record temnode;
			temnode=data[open];
			for(i=1;i<=preopen;i++)
			{
				if(Dupe(temnode,data[i]))
					open=open-1;

			}
			//ShowStatus(data[open-1].ch);
			if(Goals(data[open]))
			{
				tt=FALSE;
                ftot=true;
			}
			if(tt==FALSE)
				break;
		}
//failed: break;
	}
    
	if(tt==FALSE && open<100000)
	{
		//記下深度
		depth=data[open].dep;
		//把直接移動(dòng)的狀態(tài)用output數(shù)組記下來(lái)
		struct record temnode;
		int temi,temdepth;
		temdepth=depth;
		temnode=data[open];
		output[0]=data[1];
		output[temdepth]=data[open];
		while(temnode.pnt!=1)
		{
			temi=temnode.pnt;
			output[--temdepth]=data[temi];
			temnode=data[temi];
		}
		//output數(shù)組賦值完畢

		//使單步運(yùn)行按鈕有效
		//m_cButtonStepRun.EnableWindow(TRUE);

		//輸出提示信息
		CString count;
		count.Format("%i",open-1);
		//CString std;
	    //std.Format("%d",open);
	    //MessageBox(std);
		//MessageBox("    運(yùn)行成功!\n\n共產(chǎn)生"+count+"個(gè)狀態(tài)(包括目標(biāo)狀態(tài),但不包括初始狀態(tài))");
		String="      初始化成功!\n\n    共產(chǎn)生"+count+"個(gè)狀態(tài)\n\n可以使用自動(dòng)運(yùn)行和單步運(yùn)行\(zhòng)n\n也可以使用鼠標(biāo)或鍵盤(pán)方向鍵進(jìn)行移動(dòng)\n\n";
	}
  //else
	 //MessageBox("Failed!");
	if (open>=100000 && tt==TRUE)
	{
     //CString std;
	 //std.Format("%d",open);
	 //MessageBox(std);
	 MessageBox("內(nèi)存不足,或本組數(shù)據(jù)不能夠到達(dá)目標(biāo)狀態(tài)\n\n     可以使用鼠標(biāo)或鍵盤(pán)方向鍵進(jìn)行移動(dòng)\n\n  要重新開(kāi)始,請(qǐng)單擊‘開(kāi)始游戲’","初始化失敗",MB_OK|MB_ICONINFORMATION);
				//MessageBox("恭喜你,你已贏得這局,’","八數(shù)碼游戲",MB_OK|MB_ICONINFORMATION);
				//exit(1);
				//continue;
				//goto failed;
	  ftot=false;
	}
	

  
}

void CEightNumberView::DrawGraphics()
{
    int i;
	CDC *pDC=GetDC();
	for(i=0;i<=3;i++)
	{
		pDC->MoveTo(i*160+20,20);
		pDC->LineTo(i*160+20,480+20);
	}
	for(i=0;i<=3;i++)
	{
		pDC->MoveTo(20,i*160+20);
		pDC->LineTo(480+20,i*160+20);
	}
	pDC->DeleteDC();
	return;
}

void CEightNumberView::GetRand()
{
   srand(time(NULL));
   int aa[9];
   int i,j;
   //&start[0][0]=aa;
   CString str,string="",st;
//   int dat;
  // aa[0]=rand()%9;
     for (i=0; i<9;i++)
	 {
		 aa[i]=rand()%9;
		 for(j=0; j<i;j++)
		 {
			 if (aa[i]==aa[j])
			 {
               
			  do
			  {

				aa[i]=rand()%9;
				
			  } while (aa[i]==aa[j]);
            
			 }
			
		 }
		 //str.Format("%d",aa[i]);
		//	MessageBox(str);
	
	 }
   st="012345678";
   int ab[9];
   int a,t;
   for (i=0; i<9; i++)
	   ab[i]=11;
   for (j=1; j<10; j++)
   {
	   a=0;
	   t=atoi(substr(st,j,1));
	   for (i=0; i<9; i++)
	   {
		   //t=atoi(substr(st,j,1));
		   if (t==aa[i])
		   {
			   a=a+1;
		       if (a>1)
			    aa[i]=9;
		   }
	   }
	   if (a==0)
	   {
			   //aa[i]=10;
			   ab[j-1]=t;
	   }
	   
	   //str.Format("%d",aa[i]);
	   //MessageBox(str);
   }
   /*CString std="";
   for (i=0; i<9; i++)
   {
	   str.Format("%d",aa[i]);
	   std=std+"  "+str; 
   }
   MessageBox(std);
for (i=0; i<9; i++)
   {
	   str.Format("%d",ab[i]);
	   std=std+"  "+str; 
   }
   MessageBox(std);*/
   for (i=0; i<9; i++)
   {
	   if (aa[i]==9)
	   {
		   for (j=0; j<9; j++)
		   {
			   if (ab[j]!=11)
			   {

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃视频免费观看一区| 国产成人在线观看| 国产精品小仙女| 色综合久久久网| 欧美一二三区精品| 国产精品国产三级国产aⅴ中文| 亚洲国产精品久久艾草纯爱| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 91超碰这里只有精品国产| 国产欧美综合在线观看第十页| 日韩av电影天堂| 99视频精品免费视频| 精品福利一二区| 亚洲国产成人tv| 激情综合色丁香一区二区| 在线播放日韩导航| 亚洲日本在线视频观看| 国内精品嫩模私拍在线| 欧美色涩在线第一页| 国产欧美日产一区| 久久电影网站中文字幕| 欧美精品 国产精品| 18欧美亚洲精品| 国产成人精品一区二区三区四区| 欧美区视频在线观看| 中文字幕久久午夜不卡| 国产一区日韩二区欧美三区| 欧美高清激情brazzers| 一区二区视频在线| 国产成人精品亚洲777人妖| 正在播放亚洲一区| 伊人性伊人情综合网| 99久久99久久综合| 欧美成人精品3d动漫h| 一区二区三区在线观看欧美| 91香蕉国产在线观看软件| 亚洲精品在线电影| 国产综合色产在线精品| 欧美一区二区三区的| 视频在线观看一区| 精品婷婷伊人一区三区三| 国产亚洲精品免费| 免费在线观看成人| 欧美三级三级三级| 图片区小说区区亚洲影院| 在线免费观看日本欧美| 午夜精品免费在线| 欧美丝袜第三区| 婷婷国产v国产偷v亚洲高清| 在线观看亚洲成人| 石原莉奈在线亚洲三区| 欧美日韩一区二区三区高清| 亚洲丶国产丶欧美一区二区三区| 91搞黄在线观看| 亚洲特黄一级片| 欧洲一区在线电影| 亚洲另类在线制服丝袜| 欧美日韩一卡二卡三卡 | 91精品婷婷国产综合久久性色 | 91国产福利在线| 一区二区三区在线免费视频| www.亚洲免费av| 日韩一区二区三| 午夜精彩视频在线观看不卡| 欧美一卡2卡三卡4卡5免费| 日韩精品乱码av一区二区| 欧美三日本三级三级在线播放| 青青草97国产精品免费观看 | 日韩成人免费在线| 欧美福利视频一区| 亚洲午夜日本在线观看| 欧美亚州韩日在线看免费版国语版| 亚洲美女电影在线| 成人理论电影网| 综合欧美一区二区三区| 日本精品一区二区三区四区的功能| 亚洲自拍偷拍图区| 欧美另类z0zxhd电影| 亚洲男帅同性gay1069| 欧美日韩成人综合在线一区二区| 麻豆国产欧美日韩综合精品二区| 精品第一国产综合精品aⅴ| 成人精品在线视频观看| 尤物视频一区二区| 日韩精品一区二区三区swag| 国产主播一区二区三区| 久久久久久久久99精品| 色综合久久99| 亚洲成人av中文| 亚洲精品一区在线观看| 99精品视频在线免费观看| 五月天婷婷综合| 久久久久亚洲综合| 成a人片国产精品| 亚洲国产精品久久久男人的天堂 | 中文字幕中文字幕一区| 97se亚洲国产综合自在线不卡| 亚洲成人一区二区| 欧美精品久久天天躁| 蜜桃一区二区三区在线| 国产精品不卡在线观看| 欧美高清视频www夜色资源网| 国产成人在线色| 亚洲综合在线免费观看| 国产午夜精品福利| 欧美视频在线一区| 国产+成+人+亚洲欧洲自线| 亚洲精品视频自拍| 亚洲精品在线一区二区| www.欧美色图| 久久99蜜桃精品| 怡红院av一区二区三区| 久久蜜臀精品av| 欧美日韩一区二区三区免费看| 成人激情av网| 免费成人小视频| 国产日韩精品一区二区三区在线| 欧美电影影音先锋| av在线不卡网| 国产一区美女在线| 婷婷亚洲久悠悠色悠在线播放 | 国产成人在线视频网址| 亚洲午夜精品网| 久久精品一区二区三区不卡 | 亚洲男人的天堂一区二区| 日韩精品一区二区三区视频在线观看 | 亚洲精品中文在线| 2019国产精品| 欧美精品 国产精品| 91视频国产观看| 国产精品一区久久久久| 亚洲久本草在线中文字幕| 久久蜜桃一区二区| 777xxx欧美| 极品美女销魂一区二区三区免费| 一区二区理论电影在线观看| 欧美韩国日本一区| 777午夜精品免费视频| 欧美视频中文字幕| 成人免费不卡视频| 国内精品伊人久久久久影院对白| 天天影视涩香欲综合网| 日韩一区在线播放| 国产日本欧美一区二区| 欧美精品在线一区二区三区| 日本韩国欧美一区二区三区| 福利一区二区在线观看| 久久99精品久久只有精品| 午夜精品久久久久久久久久| 亚洲男女毛片无遮挡| 国产午夜精品一区二区 | 国产91精品欧美| 国内精品国产成人| 久久精品99久久久| 亚洲一区二区三区自拍| 一区二区在线观看视频| 国产欧美一区二区精品性色| 国产欧美一区二区精品性色超碰| 久久亚洲综合色一区二区三区| 久久综合网色—综合色88| 欧美一级免费大片| 欧美电视剧免费观看| 56国语精品自产拍在线观看| 欧美丰满一区二区免费视频| 欧美日韩精品一区二区三区 | 国产高清一区日本| 国产一区二区美女诱惑| 国产精品亚洲综合一区在线观看| 日韩国产欧美在线视频| 香蕉成人啪国产精品视频综合网| 亚洲国产欧美日韩另类综合| 亚洲一区二区精品3399| 午夜久久久久久| 亚洲人成网站在线| 一区二区三区四区国产精品| 亚洲男人的天堂在线aⅴ视频 | 日本高清免费不卡视频| 色偷偷成人一区二区三区91| 欧美午夜精品久久久久久超碰| 欧美性猛交一区二区三区精品| 91精品国产一区二区三区蜜臀 | 国产精品白丝jk黑袜喷水| 日本不卡在线视频| 手机精品视频在线观看| 天天操天天综合网| 激情深爱一区二区| 精品在线观看视频| 男人的天堂久久精品| 日韩国产欧美在线播放| 老司机免费视频一区二区三区| 老司机午夜精品| 国产成人av一区二区三区在线| 国产凹凸在线观看一区二区| 国产麻豆精品一区二区| 99视频有精品| 91精彩视频在线| 7777精品伊人久久久大香线蕉经典版下载 | 午夜激情一区二区三区| 精彩视频一区二区| 99re热视频这里只精品|