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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? eightnumberview.cpp

?? 人工智能的源代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// 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("初始化失敗!非常遺憾此狀態無解\n\n   禁止使用自動運行和單步運行\n\n      只能使用鼠標或鍵盤方向鍵移動");
	 }
   
    //m_ShowState.EnableWindow(FALSE);
}

void CEightNumberView::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	AfxGetMainWnd()->SetWindowText("八數碼游戲[作者:李少輝]");
	// 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();

	  //目標狀態
    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;
	//顯示目標狀態
	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)//檢查是否與已有狀態重復
{
   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個方向移動是否出棋盤
{
    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)//檢查是否為目標
{
	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;   //出隊一個元素
		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\n     可以使用鼠標進行移動\n\n  要重新開始,請單擊‘開始游戲’","初始化失敗",MB_OK|MB_ICONINFORMATION);
				//MessageBox("恭喜你,你已贏得這局,’","八數碼游戲",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;
		//把直接移動的狀態用output數組記下來
		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數組賦值完畢

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

		//輸出提示信息
		CString count;
		count.Format("%i",open-1);
		//CString std;
	    //std.Format("%d",open);
	    //MessageBox(std);
		//MessageBox("    運行成功!\n\n共產生"+count+"個狀態(包括目標狀態,但不包括初始狀態)");
		String="      初始化成功!\n\n    共產生"+count+"個狀態\n\n可以使用自動運行和單步運行\n\n也可以使用鼠標或鍵盤方向鍵進行移動\n\n";
	}
  //else
	 //MessageBox("Failed!");
	if (open>=100000 && tt==TRUE)
	{
     //CString std;
	 //std.Format("%d",open);
	 //MessageBox(std);
	 MessageBox("內存不足,或本組數據不能夠到達目標狀態\n\n     可以使用鼠標或鍵盤方向鍵進行移動\n\n  要重新開始,請單擊‘開始游戲’","初始化失敗",MB_OK|MB_ICONINFORMATION);
				//MessageBox("恭喜你,你已贏得這局,’","八數碼游戲",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)
			   {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合成人精品亚洲另类欧美| 欧美性淫爽ww久久久久无| 日韩成人一级大片| 亚洲国产日韩a在线播放性色| 亚洲素人一区二区| 亚洲欧美日韩一区| 亚洲三级久久久| 亚洲va欧美va人人爽午夜| 日本不卡的三区四区五区| 美女视频一区二区三区| 国产一区二区三区观看| 国产a视频精品免费观看| 成人av片在线观看| 欧美视频一区在线观看| 日韩西西人体444www| 欧美xxxx在线观看| 中文字幕成人在线观看| 亚洲伦理在线免费看| 亚洲aaa精品| 国产原创一区二区三区| 成人av第一页| 欧美日韩国产一级片| 欧美精品一区二区三| 亚洲欧美电影一区二区| 奇米色一区二区三区四区| 国产精品18久久久久久久久久久久 | 久久国产精品99久久久久久老狼 | 久久精品国产一区二区| 国产精品91xxx| 日本二三区不卡| 欧美一区二区黄| 亚洲欧洲国产专区| 日韩中文字幕区一区有砖一区 | 日日摸夜夜添夜夜添亚洲女人| 久久福利资源站| 在线观看日韩毛片| 国产欧美一区二区三区鸳鸯浴| 亚洲美腿欧美偷拍| 国产中文一区二区三区| 欧美日韩在线三区| 国产精品拍天天在线| 老司机精品视频线观看86| 99精品欧美一区二区三区小说| 欧美一级免费大片| 亚洲免费三区一区二区| 国产成人aaa| 欧美xingq一区二区| 艳妇臀荡乳欲伦亚洲一区| 国产成人精品免费| 日韩午夜中文字幕| 亚洲午夜日本在线观看| 91美女在线观看| 中文字幕av一区二区三区| 久久国产精品色| 日韩一区二区视频| 亚洲国产视频一区| 99久久精品国产导航| 国产欧美日韩不卡| 国产在线观看免费一区| 日韩亚洲欧美中文三级| 午夜私人影院久久久久| 欧美综合一区二区| 日韩理论片网站| 99久久99久久久精品齐齐| 久久精品男人的天堂| 国产精品一级在线| 精品国产一区二区三区四区四| 日韩精品高清不卡| 日韩一级成人av| 蜜臀av性久久久久蜜臀aⅴ四虎 | 中文字幕av资源一区| 久久www免费人成看片高清| 91精品国产综合久久久久久漫画| 亚洲一区二区三区四区不卡| 色综合久久久网| 亚洲色图一区二区三区| 日本高清不卡aⅴ免费网站| 一区二区三区国产精华| 欧美性生活大片视频| 亚洲福利一区二区| 欧美精品1区2区| 久久精品夜色噜噜亚洲a∨| 激情六月婷婷综合| 欧美激情在线免费观看| 97超碰欧美中文字幕| 亚洲激情图片小说视频| 欧美放荡的少妇| 久久91精品国产91久久小草| 精品久久久三级丝袜| 成人免费毛片aaaaa**| 一区二区三区在线视频观看| 欧美日韩高清影院| 激情成人综合网| 中文字幕亚洲不卡| 欧美日韩亚洲综合一区| 日本vs亚洲vs韩国一区三区二区| 精品国产一区二区精华| 9i看片成人免费高清| 亚洲午夜免费电影| 精品福利av导航| 91丝袜国产在线播放| 日韩精品视频网| 国产精品久久久久7777按摩| 欧美亚洲高清一区| 国产一区二区免费视频| 亚洲男人的天堂在线aⅴ视频| 欧美日韩激情一区二区三区| 国产一二三精品| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲一区在线免费观看| 欧美成人a在线| 色悠悠亚洲一区二区| 久久国产精品无码网站| 亚洲乱码精品一二三四区日韩在线| 欧美一区二区三区四区视频| 大胆亚洲人体视频| 麻豆国产欧美日韩综合精品二区 | 337p粉嫩大胆噜噜噜噜噜91av| 成人毛片老司机大片| 日日摸夜夜添夜夜添国产精品| 国产精品久久久久久久久免费桃花| 欧美精三区欧美精三区| heyzo一本久久综合| 另类中文字幕网| 一区二区三区免费观看| 国产精品网站导航| 精品噜噜噜噜久久久久久久久试看| 日本韩国一区二区三区视频| 国产成人免费视频一区| 麻豆国产一区二区| 丝瓜av网站精品一区二区| 中文字幕在线不卡| 日本一区二区三区四区| 亚洲精品一区二区在线观看| 欧美精品免费视频| 欧美日韩精品一区二区三区四区 | 婷婷六月综合亚洲| 依依成人精品视频| 国产精品国产三级国产专播品爱网| 日韩三级视频在线观看| 欧美日韩亚洲综合一区二区三区| 色综合网色综合| 91蜜桃在线免费视频| 97精品国产97久久久久久久久久久久| 国产在线精品视频| 国产麻豆成人精品| 国产精品香蕉一区二区三区| 国内不卡的二区三区中文字幕| 久久99精品久久只有精品| 麻豆精品在线观看| 激情av综合网| 国产精品69毛片高清亚洲| 丰满白嫩尤物一区二区| 成人性色生活片| 成人午夜免费av| 99久久精品国产麻豆演员表| 成人精品国产一区二区4080| 不卡一卡二卡三乱码免费网站| 成人免费av资源| 97aⅴ精品视频一二三区| 色噜噜狠狠色综合欧洲selulu| 色视频成人在线观看免| 欧美性猛片aaaaaaa做受| 欧美疯狂性受xxxxx喷水图片| 欧美日韩一级黄| 日韩美女一区二区三区| 久久久亚洲午夜电影| 国产精品婷婷午夜在线观看| 亚洲天堂网中文字| 石原莉奈在线亚洲二区| 久久精品国产一区二区| 成人av资源下载| 欧洲国产伦久久久久久久| 欧美日韩mp4| 久久久久久97三级| 国产精品久久久久久一区二区三区| 亚洲精品国产无套在线观| 丝袜美腿亚洲一区| 国产资源在线一区| 92精品国产成人观看免费| 欧美日韩免费视频| 精品成人a区在线观看| 亚洲区小说区图片区qvod| 偷拍一区二区三区四区| 大美女一区二区三区| 欧美日韩国产三级| 中文字幕免费观看一区| 一区二区三区四区不卡视频| 久热成人在线视频| 91视频一区二区三区| 日韩一区二区在线观看视频播放| 国产精品视频在线看| 日韩成人免费电影| 色综合中文字幕| 久久综合九色综合97婷婷女人| 亚洲精品欧美二区三区中文字幕| 麻豆国产91在线播放| 色欧美日韩亚洲| 国产日韩高清在线| 日韩电影在线一区二区三区|