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

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

?? eightqueenview.cpp

?? 人工智能中八皇后問題的算法演示
?? CPP
字號:
// EightQueenView.cpp : implementation of the CEightQueenView class
//

#include "stdafx.h"
#include "EightQueen.h"

#include "EightQueenDoc.h"
#include "EightQueenView.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CEightQueenView

IMPLEMENT_DYNCREATE(CEightQueenView, CView)

BEGIN_MESSAGE_MAP(CEightQueenView, CView)
	//{{AFX_MSG_MAP(CEightQueenView)
	ON_COMMAND(ID_MYSTART, OnMystart)
	ON_WM_MOUSEMOVE()
	ON_WM_LBUTTONDOWN()
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEightQueenView construction/destruction

CEightQueenView::CEightQueenView()
{
	// TODO: add construction code here
	Grid_Width = 50;
	Init();
}

CEightQueenView::~CEightQueenView()
{
}

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

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CEightQueenView drawing

void CEightQueenView::OnDraw(CDC* pDC)
{
	CEightQueenDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	WINDOWPLACEMENT *lpwndpl  = new WINDOWPLACEMENT;
	GetWindowPlacement(lpwndpl);
		
	int DocSizey = lpwndpl->rcNormalPosition.bottom-lpwndpl->rcNormalPosition.top-4;
	int DocSizex = lpwndpl->rcNormalPosition.right-lpwndpl->rcNormalPosition.left-4;
	int posx = (int)(DocSizex - Grid_Width * 8) / 2;
	int posy = (int)(DocSizey - Grid_Width * 8) / 2;
	
	CBitmap bitmap_8Queen;
	bitmap_8Queen.LoadBitmap(IDB_8Queen);
	
	BITMAP* pBitMap = new BITMAP;
	bitmap_8Queen.GetBitmap(pBitMap);
	
	int bitmap_width = pBitMap->bmWidth;
	int bitmap_height = pBitMap->bmHeight;
	
	int bitmap_pos_x = (int)(DocSizex - bitmap_width-100) / 2;
	int bitmap_pos_y = (int)(posy - bitmap_height) / 2;
	CFont m_Font;
	m_Font.CreatePointFont(330,"隸書",pDC);
	pDC->SelectObject(&m_Font);
	CString str;
	str.Format("%d",PreRecord+1);
	str = "第"+ str+"種解";
	pDC->TextOut(bitmap_pos_x+bitmap_width,bitmap_pos_y,str);//(bitmap_pos_x+100,bitmap_pos_y,"第0種解");

	CDC pdc;
	pdc.CreateCompatibleDC(pDC);
	pdc.SelectObject(&bitmap_8Queen);

	pDC->BitBlt(bitmap_pos_x,bitmap_pos_y,bitmap_width,bitmap_height,&pdc,0,0,SRCCOPY);

	COLORREF TopLeft = ::GetSysColor(COLOR_BTNHILIGHT);
	COLORREF BottomRight = ::GetSysColor(COLOR_BTNSHADOW);
	int i,j;
	char color;
	for(i=0;i<8;++i)
	{
		if((i%2) == 0)
			color = 'b';
		else
			color = 'w';
		for(j=0;j<8;++j)
		{
			if(color == 'b')
			{
				pDC->FillSolidRect(posx+i*Grid_Width,posy+j*Grid_Width,
					Grid_Width,Grid_Width,RGB(0,0,0));
				color = 'w';
			}
			else
			{
				pDC->FillSolidRect(posx+i*Grid_Width,posy+j*Grid_Width,
					Grid_Width,Grid_Width,RGB(255,255,255));
				color = 'b';
			}
			pDC->Draw3dRect(posx+i*Grid_Width,posy+j*Grid_Width,
				Grid_Width,Grid_Width,TopLeft,BottomRight);
		}
	}
	// TODO: add draw code for native data here

	//畫棋子
	for(i=0;i<8;++i)
	{
		if(Queen_Pos[i] != -1)
		{
			Put_Queen_Bitmap(i,Queen_Pos[i]);
		}
	}

	//判斷載入何種Previour圖片
	CBitmap m_BitmapNext;
	CBitmap m_BitmapPrev;
	if(m_bPrevChecked)
	{
		m_BitmapPrev.LoadBitmap(IDB_PREVIOUR_CHECKED);
	}
	else
	{
		m_BitmapPrev.LoadBitmap(IDB_PREVIOUR);
	}
	//計算Previour按扭的位置
	m_BitmapPrev.GetBitmap(pBitMap);

	bitmap_width = pBitMap->bmWidth;
	bitmap_height = pBitMap->bmHeight;

	bitmap_pos_x = (int)(DocSizex - bitmap_width*2 - 200) / 2;
	bitmap_pos_y = (int)((posy - bitmap_height) / 2) + (DocSizey - posy);
	
	//畫Previour按扭
	pdc.SelectObject(&m_BitmapPrev);
	pDC->BitBlt(bitmap_pos_x,bitmap_pos_y,bitmap_width,bitmap_height,&pdc,0,0,SRCCOPY);
	
	//記錄Previour按扭的位置
	m_CRectPrev.left = bitmap_pos_x;
	m_CRectPrev.right = bitmap_pos_x + bitmap_width;
	m_CRectPrev.top = bitmap_pos_y;
	m_CRectPrev.bottom = bitmap_pos_y + bitmap_height;
	
	//判斷載入何種Next圖片
	if(m_bNextChecked)
	{
		m_BitmapNext.LoadBitmap(IDB_NEXT_CHECKED);
	}
	else
	{
		m_BitmapNext.LoadBitmap(IDB_NEXT);
	}
	//計算Next按扭的位置
	bitmap_pos_x += 200;
	
	//畫Next按扭
	pdc.SelectObject(&m_BitmapNext);
	pDC->BitBlt(bitmap_pos_x,bitmap_pos_y,bitmap_width,bitmap_height,&pdc,0,0,SRCCOPY);
	
	//記錄Nect按扭的位置
	m_CRectNext.left = bitmap_pos_x;
	m_CRectNext.right = bitmap_pos_x + bitmap_width;
	m_CRectNext.top = bitmap_pos_y;
	m_CRectNext.bottom = bitmap_pos_y + bitmap_height;
}

/////////////////////////////////////////////////////////////////////////////
// CEightQueenView printing

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

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

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

/////////////////////////////////////////////////////////////////////////////
// CEightQueenView diagnostics

#ifdef _DEBUG
void CEightQueenView::AssertValid() const
{
	CView::AssertValid();
}

void CEightQueenView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

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

/////////////////////////////////////////////////////////////////////////////
// CEightQueenView message handlers

void CEightQueenView::Put_Queen()
{
	int i,j;
	bool Have_put;
	while(true)
	{
		if(Pre_Column<8)
		{
			Have_put = false;
			for(i=0;i<8;++i)
			{
				if((Queen_Pos[i] == -1) && (Diagonal(i,Pre_Column)) && 
					(!record[Pre_Column][i]))
				{
					//記錄
					Queen_Pos[i] = Pre_Column;
					record[Pre_Column][i] = true;
					Have_put = true;
					Pre_Column++;

				}
			}
			if(!Have_put)
			{
				//沒有找到合適的位置,回溯
			
				for(j=0;j<8;++j)
				{
					if(Queen_Pos[j] == Pre_Column-1)
					{
						//消去上一行的棋子
						Remove_Queen_Bitmap(j,Pre_Column-1);
						Queen_Pos[j] = -1;
					}
					if(record[Pre_Column][j])
					{
						record[Pre_Column][j] = false;
					}
				}
				Pre_Column--;

			}
		}
		else
		{
			//保存記錄
			for(i=0;i<8;++i)
			{
				QueenPos_Record[PreNumRecord][i] = Queen_Pos[i];
			}
			PreNumRecord++;
			PreRecord++;
			OnDraw(GetDC());
			break;
		}
	}

}

void CEightQueenView::Init()
{
	int i,j;
	//記錄初始化
	for(i=0;i<8;++i)
	{
		for(j=0;j<8;++j)
		{
			record[i][j] = false;
		}
	}
	Pre_Column = 0;
	for(i=0;i<8;++i)
		Queen_Pos[i] = -1;

	PreNumRecord = 0;
	PreRecord = -1;
	m_bNextChecked = FALSE;
	m_bPrevChecked = FALSE;
}


bool CEightQueenView::Diagonal(int row, int column)
{
	int m_row = row - 1;
	int m_column = column - 1;
	while((m_row<8) && (m_column<8) && (m_row>=0) && (m_column>=0))
	{
		if(Queen_Pos[m_row] == m_column)
		{
			return false;
		}
		else
		{
			m_row--;
			m_column--;
		}
	}
	m_row = row + 1;
	m_column = column + 1;
	while((m_row<8) && (m_column<8) && (m_row>=0) && (m_column>=0))
	{
		if(Queen_Pos[m_row] == m_column)
		{
			return false;
		}
		else
		{
			m_row++;
			m_column++;
		}
	}

	m_row = row + 1;
	m_column = column - 1;
	while((m_row<8) && (m_column<8) && (m_row>=0) && (m_column>=0))
	{
		if(Queen_Pos[m_row] == m_column)
		{
			return false;
		}
		else
		{
			m_row++;
			m_column--;
		}
	}

	m_row = row - 1;
	m_column = column + 1;
	while((m_row<8) && (m_column<8) && (m_row>=0) && (m_column>=0))
	{
		if(Queen_Pos[m_row] == m_column)
		{
			return false;
		}
		else
		{
			m_row--;
			m_column++;
		}
	}
	return true;	
}

void CEightQueenView::Put_Queen_Bitmap(int row, int column)
{
	char grid_color;
	//計算所在的方格的顏色
	if((column % 2) == 0)
	{
		if((row % 2) == 0)
		{
			grid_color = 'B';
		}
		else
		{
			grid_color = 'W';
		}
	}
	else
	{
		if((row % 2) == 0)
		{
			grid_color = 'W';
		}
		else
		{
			grid_color = 'B';
		}
	}

	CDC* pDC = GetDC();
	CDC pdc;
	pdc.CreateCompatibleDC(pDC);
	CBitmap bitmap_Queen;
	

	//調入相應的位圖
	if(grid_color == 'B')
	{
		bitmap_Queen.LoadBitmap(IDB_QUEEN_BLACK);
	}
	else
	{
		bitmap_Queen.LoadBitmap(IDB_QUEEN_WHITE);
	}
	pdc.SelectObject(&bitmap_Queen);

	//計算放置的位置
	WINDOWPLACEMENT *lpwndpl  = new WINDOWPLACEMENT;
	GetWindowPlacement(lpwndpl);
		
	int DocSizey = lpwndpl->rcNormalPosition.bottom-lpwndpl->rcNormalPosition.top-4;
	int DocSizex = lpwndpl->rcNormalPosition.right-lpwndpl->rcNormalPosition.left-4;
	int posx = (int)(DocSizex - Grid_Width * 8) / 2;
	int posy = (int)(DocSizey - Grid_Width * 8) / 2;

	int queen_pos_x = posx + row * Grid_Width;
	int queen_pos_y = posy + column * Grid_Width;
	pDC->BitBlt(queen_pos_x,queen_pos_y,Grid_Width,Grid_Width,&pdc,0,0,SRCCOPY);


}

void CEightQueenView::Remove_Queen_Bitmap(int row, int column)
{
	char grid_color;
	//計算所在的方格的顏色
	if((column % 2) == 0)
	{
		if((row % 2) == 0)
		{
			grid_color = 'B';
		}
		else
		{
			grid_color = 'W';
		}
	}
	else
	{
		if((row % 2) == 0)
		{
			grid_color = 'W';
		}
		else
		{
			grid_color = 'B';
		}
	}

	CDC* pDC = GetDC();
	COLORREF Pre_Color;

	if(grid_color == 'B')
	{
		Pre_Color = RGB(0,0,0);
	}
	else
	{
		Pre_Color = RGB(255,255,255);
	}

	//計算放置的位置
	WINDOWPLACEMENT *lpwndpl  = new WINDOWPLACEMENT;
	GetWindowPlacement(lpwndpl);
		
	int DocSizey = lpwndpl->rcNormalPosition.bottom-lpwndpl->rcNormalPosition.top-4;
	int DocSizex = lpwndpl->rcNormalPosition.right-lpwndpl->rcNormalPosition.left-4;
	int posx = (int)(DocSizex - Grid_Width * 8) / 2;
	int posy = (int)(DocSizey - Grid_Width * 8) / 2;
	
	pDC->FillSolidRect(posx+row*Grid_Width,posy+column*Grid_Width,
		Grid_Width,Grid_Width,Pre_Color);

	COLORREF TopLeft = ::GetSysColor(COLOR_BTNHILIGHT);
	COLORREF BottomRight = ::GetSysColor(COLOR_BTNSHADOW);
	pDC->Draw3dRect(posx+row*Grid_Width,posy+column*Grid_Width,
				Grid_Width,Grid_Width,TopLeft,BottomRight);
}



void CEightQueenView::OnMystart() 
{
	// TODO: Add your command handler code here
	Put_Queen();
}

void CEightQueenView::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if((point.x>m_CRectPrev.left) && (point.x<m_CRectPrev.right) &&
		(point.y>m_CRectPrev.top) && (point.y<m_CRectPrev.bottom))
	{
		if(!m_bPrevChecked)
		{
			m_bPrevChecked = TRUE;
			OnDraw(GetDC());
		}
	}
	else
	{
		if(m_bPrevChecked)
		{
			m_bPrevChecked = FALSE;
			OnDraw(GetDC());
		}
	}

	if((point.x>m_CRectNext.left) && (point.x<m_CRectNext.right) &&
		(point.y>m_CRectNext.top) && (point.y<m_CRectNext.bottom))
	{
		if(!m_bNextChecked)
		{
			m_bNextChecked = TRUE;
			OnDraw(GetDC());
		}
	}
	else
	{
		if(m_bNextChecked)
		{
			m_bNextChecked = FALSE;
			OnDraw(GetDC());
		}
	}
	CView::OnMouseMove(nFlags, point);
}

void CEightQueenView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	int i,j;
	if(m_bPrevChecked)
	{
		if(PreRecord>0)
		{
			PreRecord--;
		
			//從記錄中提取放置的位置
			for(i=0;i<8;++i)
			{
				Queen_Pos[i] = QueenPos_Record[PreRecord][i];
			}
			OnDraw(GetDC());
		}
	}
	if(m_bNextChecked)
	{
		if(PreRecord == (PreNumRecord-1))
		{//顯示的是新產生的
		
			if(Pre_Column != 0)
			{
				//在棋盤上消去棋子
				for(j=0;j<8;++j)
				{
					if(Queen_Pos[j] == Pre_Column-1)
					{
						//消去該行的棋子
						Remove_Queen_Bitmap(j,Pre_Column-1);
						//清除記錄
						Queen_Pos[j] = -1;
					}
				}
				Pre_Column--;
			}
			Put_Queen();
		}
		else
		{
			if(PreRecord<91)
			{
				PreRecord++;
			
				//從記錄中提取放置的位置
				for(i=0;i<8;++i)
				{
					Queen_Pos[i] = QueenPos_Record[PreRecord][i];
				}
				OnDraw(GetDC());
			}
		}
		
	}
	CView::OnLButtonDown(nFlags, point);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91成人网在线| 国产传媒一区在线| 3atv在线一区二区三区| 亚洲成年人网站在线观看| 欧美色图在线观看| 日本女优在线视频一区二区| 欧美蜜桃一区二区三区| 日韩精品一级中文字幕精品视频免费观看 | 日韩一区二区三区精品视频| 亚洲成人免费在线| 欧美va亚洲va| 成人免费不卡视频| 亚洲自拍与偷拍| 欧美喷潮久久久xxxxx| 久久97超碰国产精品超碰| 国产精品天干天干在观线| 91久久人澡人人添人人爽欧美| 天天综合天天做天天综合| 日韩西西人体444www| 国产高清精品网站| 一个色综合网站| 欧美大片在线观看一区二区| 成人久久18免费网站麻豆 | 欧美人妇做爰xxxⅹ性高电影 | 欧美三级电影在线看| 捆绑调教一区二区三区| 国产精品热久久久久夜色精品三区| 精品亚洲成a人在线观看| 中文字幕不卡在线| 欧美午夜不卡在线观看免费| 激情都市一区二区| 亚洲影视在线播放| 久久综合色之久久综合| jlzzjlzz亚洲日本少妇| 日韩电影免费在线| 国产精品青草久久| 欧美一区二区三区男人的天堂| 国产美女视频91| 亚洲成人资源网| 国产人成一区二区三区影院| 欧美日韩大陆在线| 成人app在线观看| 麻豆传媒一区二区三区| 亚洲精品视频一区| 久久网站热最新地址| 欧美色中文字幕| 99久久综合99久久综合网站| 裸体健美xxxx欧美裸体表演| 亚洲精品五月天| 精品久久国产字幕高潮| 欧美色网站导航| 色综合欧美在线| 成人一区二区三区视频 | 最新久久zyz资源站| 欧美大肚乱孕交hd孕妇| 欧美视频一区二区三区四区| 94-欧美-setu| 成人网在线免费视频| 精品一区二区三区欧美| 丝袜美腿亚洲色图| 一区二区不卡在线播放 | 欧美高清视频一二三区| 色94色欧美sute亚洲线路一ni| 国产91富婆露脸刺激对白| 激情综合网av| 日本亚洲天堂网| 午夜久久久影院| 亚洲影院在线观看| 青青草伊人久久| 日韩精品乱码免费| 亚洲国产精品尤物yw在线观看| 亚洲视频在线一区| 中文字幕一区二区在线播放| 国产欧美日韩精品在线| 久久久久国产精品麻豆ai换脸| 日韩精品一区二区三区蜜臀| 欧美成人精品二区三区99精品| 69久久99精品久久久久婷婷| 91精品国产综合久久福利软件| 欧美日韩精品高清| 欧美一区二区私人影院日本| 欧美一区二区三区在线观看视频| 欧美一级国产精品| 日韩美女视频在线| 久久久精品2019中文字幕之3| 久久久久久亚洲综合影院红桃| 久久精品视频在线免费观看| 中文幕一区二区三区久久蜜桃| 亚洲国产电影在线观看| 国产精品萝li| 一个色妞综合视频在线观看| 午夜精品123| 狠狠色丁香九九婷婷综合五月| 国模一区二区三区白浆| 国产成人自拍高清视频在线免费播放| 国产99精品在线观看| 色呦呦网站一区| 欧美日韩视频在线一区二区| 日韩一区二区免费视频| 久久久噜噜噜久噜久久综合| 国产精品精品国产色婷婷| 一区二区三区欧美日韩| 秋霞av亚洲一区二区三| 国产a精品视频| 91麻豆swag| 欧美日韩一区二区不卡| 久久综合99re88久久爱| 中文字幕一区二区三中文字幕| 亚洲午夜久久久久久久久电影网 | 国产精品18久久久久久久网站| 国产99久久久国产精品潘金网站| 国产精品久久久久桃色tv| 国产精品一区二区久久不卡| 91九色最新地址| 欧美xxxxx裸体时装秀| 国产精品久久久久久妇女6080| 亚洲成人精品在线观看| 国产精品1区二区.| 欧美系列一区二区| 久久久久久久久伊人| 亚洲欧美aⅴ...| 黑人巨大精品欧美一区| 欧洲激情一区二区| 久久综合久久99| 一区二区三区不卡视频在线观看| 日韩成人精品在线观看| 97久久精品人人做人人爽| 欧美一区二区在线不卡| 亚洲色图都市小说| 精品一区二区三区免费| 色婷婷亚洲精品| 国产日韩欧美高清在线| 日韩电影在线免费看| 91香蕉国产在线观看软件| 26uuu精品一区二区在线观看| 亚洲自拍偷拍网站| 成人av动漫网站| 日韩精品一区二区三区中文精品 | 9191久久久久久久久久久| 欧美激情一区二区在线| 激情六月婷婷久久| 欧美美女视频在线观看| 国产精品国产三级国产| 国产永久精品大片wwwapp| 欧美精品视频www在线观看 | 欧美日韩国产经典色站一区二区三区| 国产日韩成人精品| 国产在线精品一区二区三区不卡| 欧美日韩在线电影| 亚洲三级电影网站| 国产69精品久久777的优势| 精品久久一区二区三区| 日韩精品一卡二卡三卡四卡无卡| 欧洲精品中文字幕| 亚洲欧美国产77777| av电影天堂一区二区在线观看| 久久久噜噜噜久噜久久综合| 狠狠色丁香久久婷婷综合丁香| 欧美一级在线视频| 日本欧美大码aⅴ在线播放| 欧美国产97人人爽人人喊| 精品亚洲国产成人av制服丝袜 | 亚洲国产日韩精品| 色婷婷久久久综合中文字幕| 亚洲人成在线播放网站岛国 | 亚洲一区二区精品3399| 色94色欧美sute亚洲线路一ni| √…a在线天堂一区| 99re这里都是精品| 亚洲欧洲日产国产综合网| voyeur盗摄精品| 亚洲欧美在线另类| 色婷婷精品久久二区二区蜜臀av| 亚洲特黄一级片| 色综合色综合色综合色综合色综合| 中文字幕亚洲电影| 一本高清dvd不卡在线观看 | 日本aⅴ免费视频一区二区三区 | 亚洲综合色噜噜狠狠| 欧美在线观看你懂的| 亚洲素人一区二区| 精品视频一区二区不卡| 日韩高清一区二区| 欧美一区二区三区四区高清| 九色porny丨国产精品| 久久精品亚洲精品国产欧美 | 欧洲激情一区二区| 丝袜美腿亚洲色图| 欧美精品一区二区精品网| 高清在线观看日韩| 中文字幕亚洲电影| 在线视频欧美精品| 麻豆一区二区三| 日本一区二区三区dvd视频在线| 国产91露脸合集magnet| 亚洲六月丁香色婷婷综合久久 | 激情综合网最新| 国产精品盗摄一区二区三区| 欧美中文字幕久久| 久久av老司机精品网站导航|