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

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

?? landmine.cpp

?? Windows上的挖地雷游戲.rar
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "stdafx.h"
#include "Resource.h"
#include "LandMine.h"
extern CPen Pen1,Pen2,Pen3,Pen4,Pen5,Pen6,Pen7;

void CMineButton::DrawItem(BOOL bFail)
{
	
	RECT rect;
	rect.left = m_nX;
	rect.top = m_nY;
	rect.right = m_nX+14;
	rect.bottom = m_nY+14;
	CClientDC ClientDC(m_pParent);
	ClientDC.SetBkColor(RGB(198,198,198));

	ClientDC.SelectStockObject(LTGRAY_BRUSH);
	ClientDC.SelectObject(Pen6);
	ClientDC.Rectangle(&rect);

	if(m_nStatus==MS_OPEN || bFail && m_nStatus==MS_FLAG && m_nMineNum>=0)
	{
		switch(m_nMineNum)
		{
		case 1:
			ClientDC.SetTextColor(RGB(0,128,0));
			break;

		case 2:
			ClientDC.SetTextColor(RGB(0,128,128));
			break;
			
		case 3:
			ClientDC.SetTextColor(RGB(0,0,128));
			break;
			
		case 4:
			ClientDC.SetTextColor(RGB(0,128,0));
			break;
			
		case 5:
			ClientDC.SetTextColor(RGB(128,0,0));
			break;
			
		case 6:
			ClientDC.SetTextColor(RGB(0,255,0));
			break;
			
		case 7:
			ClientDC.SetTextColor(RGB(128,128,0));
			break;
			
		case 8:
			ClientDC.SetTextColor(RGB(255,0,255));
			break;
		}
		char cTmp[2]={0,0};
		if(m_nMineNum>0)
		{
			cTmp[0]=m_nMineNum+'0';
			ClientDC.DrawText(cTmp,-1,&rect,DT_CENTER|DT_VCENTER);
		}
		int nI;

		ClientDC.SelectObject(Pen6);
		ClientDC.SetBkColor(RGB(198,198,198));
		ClientDC.SelectStockObject(NULL_BRUSH);
		ClientDC.Rectangle(rect.left,rect.top,rect.right+1,rect.bottom+1);
		for(nI=rect.left;nI<rect.right+1;nI=nI+2)
			ClientDC.SetPixel(nI,rect.bottom+1,RGB(0,0,0));
		for(nI=rect.top;nI<rect.bottom+1;nI=nI+2)
			ClientDC.SetPixel(rect.right+1,nI,RGB(0,0,0));		
		if(bFail && m_nStatus==MS_FLAG && m_nMineNum!=-1)
		{
			ClientDC.SelectObject(Pen4);
			ClientDC.MoveTo(rect.left+1,rect.top+1);
			ClientDC.LineTo(rect.right-1,rect.bottom-1);
			ClientDC.MoveTo(rect.right-1,rect.top+1);
			ClientDC.LineTo(rect.left+1,rect.bottom-1);	
		}
		return;
	}
	
	if(bFail==1 && m_nMineNum==-1)
	{
		CBitmap Bitmap;
		if(m_nStatus!=MS_EXPLODE)
			Bitmap.LoadBitmap(IDB_MINE);
		else
			Bitmap.LoadBitmap(IDB_MINEEXPLODE);

		// draw the whole button
		CDC memDC;
		memDC.CreateCompatibleDC(&ClientDC);
		CBitmap* pOld = memDC.SelectObject(&Bitmap);
		if (pOld == NULL)
			return;     // destructors will clean up

		
		ClientDC.BitBlt(rect.left, rect.top,16,16,
			&memDC, 0, 0, SRCCOPY);
		memDC.SelectObject(pOld);
		int nI;
		for(nI=rect.left;nI<rect.right+1;nI=nI+2)
			ClientDC.SetPixel(nI,rect.bottom+1,RGB(0,0,0));
		for(nI=rect.top;nI<rect.bottom+1;nI=nI+2)
			ClientDC.SetPixel(rect.right+1,nI,RGB(0,0,0));
		
		return;
	}
	
	if (m_nStatus == MS_QUEST)
	{
		ClientDC.SetTextColor(RGB(0,0,128));
		ClientDC.SetBkColor(RGB(198,198,198));
		ClientDC.DrawText("?",1,&rect,DT_CENTER|DT_VCENTER);
	}
	else
	{
		if(m_nStatus == MS_FLAG)
		{

			CBitmap Bitmap;
			Bitmap.LoadBitmap(IDB_FLAG);
			
			// draw the whole button
			CDC memDC;
			memDC.CreateCompatibleDC(&ClientDC);
			CBitmap* pOld = memDC.SelectObject(&Bitmap);
			if (pOld == NULL)
				return;     // destructors will clean up
			
			
			ClientDC.BitBlt(rect.left, rect.top,14,14,
				&memDC, 0, 0, SRCCOPY);
			memDC.SelectObject(pOld);
			
		}
	}
	ClientDC.SelectObject(Pen3);
	ClientDC.MoveTo(rect.right,rect.top);
	ClientDC.LineTo(rect.left,rect.top);
	ClientDC.LineTo(rect.left,rect.bottom);
	ClientDC.SelectObject(Pen7);
	ClientDC.LineTo(rect.right,rect.bottom);
	ClientDC.LineTo(rect.right,rect.top);
	
}

void CMineButton::ButtonDown(int Status)
{
	RECT rect;
	rect.left = m_nX;
	rect.top = m_nY;
	rect.right = m_nX+15;
	rect.bottom = m_nY+15;
	CClientDC ClientDC(m_pParent);

	if(Status==1)
	{
		ClientDC.SelectObject(Pen6);
		ClientDC.SetBkColor(RGB(198,198,198));
		ClientDC.SelectStockObject(NULL_BRUSH);
		ClientDC.Rectangle(&rect);
		int nI;
		for(nI=rect.left;nI<rect.right;nI=nI+2)
			ClientDC.SetPixel(nI,rect.bottom,RGB(0,0,0));
		for(nI=rect.top;nI<rect.bottom;nI=nI+2)
			ClientDC.SetPixel(rect.right,nI,RGB(0,0,0));
	}
	else
	{
		ClientDC.SelectObject(Pen6);
		ClientDC.MoveTo(rect.left,rect.bottom);
		ClientDC.LineTo(rect.right,rect.bottom);
		ClientDC.LineTo(rect.right,rect.top+1);

		DrawItem(FALSE);
	}

}
int CMineButton::OpenMine()
{
	if(m_nStatus==MS_NORMAL || m_nStatus==MS_QUEST)
	{

		if (m_nMineNum != -1)
		{
			m_nStatus = MS_OPEN;
			DrawItem(FALSE);
			if(m_nMineNum == 0)
				return 0;
			else
				return 1;
		}
		else
		{
			m_nStatus = MS_EXPLODE;
			DrawItem(TRUE);		//Fail
			return -1;
		}
	}
	return 1;
};


void CLandMine::Create(int nRow,int nCol,int nMineNum,int nX,int nY,CWnd *pParent)
{
	m_pParent = pParent;
	m_nX = nX;
	m_nY = nY;
	Reset(nRow,nCol,nMineNum);
}	
void CLandMine::ReDraw(int bFail)
{
int nI;
	for(nI=0;nI<m_nRow*m_nCol;nI++)
		m_aLandMine[nI]->DrawItem(bFail);
}
void CLandMine::Reset(int nRow,int nCol,int nMineNum)
{
	int nI;
	RECT rect;
	for(nI=0;nI<m_nRow*m_nCol;nI++)
	{
		if (m_aLandMine[nI]!=NULL)
			delete m_aLandMine[nI];
	}
	for(nI=0;nI<nRow*nCol;nI++)
	{
		
		rect.left = m_nX+nI%nCol*16+1;
		rect.top = m_nY+nI/nCol*16+1;
		//rect.right = m_nX+nI/nCol*16+15;
		//rect.bottom = m_nY+nI%nCol*16+15;
		m_aLandMine[nI] = new CMineButton;
		m_aLandMine[nI]->Create(m_pParent,rect.left,rect.top);
		m_aLandMine[nI]->SetStatus(MS_NORMAL);
	//	m_aLandMine[nI]->SetMineNum(0);
	}
	m_nRow = nRow;
	m_nCol = nCol;
	m_nMineNum = nMineNum;
	
	int nCurMines=0;
	int nCurMine;
	srand( (unsigned)time( NULL ));
//	srand(1);
	while(nCurMines<m_nMineNum)
	{
		nCurMine=rand()%(m_nRow*m_nCol);
		if(m_aLandMine[nCurMine]->GetMineNum() != -1)
		{
			m_aLandMine[nCurMine]->SetMineNum(-1);
			int nMineRound,nMineRound1;
			//right;
			nMineRound = GetRight(nCurMine);
			if(nMineRound>=0)
			{
				if (m_aLandMine[nMineRound]->GetMineNum() != -1)
					++(*m_aLandMine[nMineRound]);
				//right top
				nMineRound1 = GetTop(nMineRound);
				if(nMineRound1>=0 && m_aLandMine[nMineRound1]->GetMineNum() != -1)
				{
					++(*m_aLandMine[nMineRound1]);
				}
				//right bottom
				nMineRound1 = GetBot(nMineRound);
				if(nMineRound1>=0 && m_aLandMine[nMineRound1]->GetMineNum() != -1)
				{
					++(*m_aLandMine[nMineRound1]);
				}
			}			
			//left
			nMineRound = GetLeft(nCurMine);
			if(nMineRound>=0)
			{
				if(m_aLandMine[nMineRound]->GetMineNum() != -1)
					++(*m_aLandMine[nMineRound]);
		
				//Left top
				nMineRound1 = GetTop(nMineRound);
				if(nMineRound1>=0 && m_aLandMine[nMineRound1]->GetMineNum() != -1)
				{
					++(*m_aLandMine[nMineRound1]);
				}
				
				//Left bottom
				nMineRound1 = GetBot(nMineRound);
				if(nMineRound1>=0 && m_aLandMine[nMineRound1]->GetMineNum() != -1)
				{
					++(*m_aLandMine[nMineRound1]);
				}
			}
			//Top
			nMineRound = GetTop(nCurMine);
			if(nMineRound>=0 && m_aLandMine[nMineRound]->GetMineNum() != -1)
			{
				++(*m_aLandMine[nMineRound]);
			}

			//Bottom
			nMineRound = GetBot(nCurMine);
			if(nMineRound>=0 && m_aLandMine[nMineRound]->GetMineNum() != -1)
			{
				++(*m_aLandMine[nMineRound]);
			}
			nCurMines++;
		}
	}
}
void CLandMine::LButtonDown(CPoint point)
{
	int nCol=(point.x-m_nX)/16;
	int nRow=(point.y-m_nY)/16;
	int nCurMine = nCol+nRow*m_nCol;
	if (nRow >= m_nRow || nCol>=m_nCol || point.x<m_nX || point.y<m_nY )
	{
		m_nOldMine = -1;
		return;
	}
	if(nCol<m_nCol && nRow<m_nRow 
		&& (m_aLandMine[nCurMine]->GetStatus()==MS_NORMAL || m_aLandMine[nCurMine]->GetStatus()==MS_QUEST))
	{
		m_aLandMine[nCurMine]->ButtonDown(1);
		m_nOldMine = nCurMine;
	}
};
int CLandMine::LButtonUp(CPoint point)
{
	int nCol=(point.x-m_nX)/16;
	int nRow=(point.y-m_nY)/16;
	int nCurMine = nCol+nRow*m_nCol;
	if (nRow >= m_nRow || nCol>=m_nCol || point.x<m_nX || point.y<m_nY)
		return 0;
	BOOL nStatus = OpenMine(nCurMine);
	if(nStatus==FALSE)
	{	int nI;
		for(nI=0;nI<m_nRow*m_nCol;nI++)
		{
			if(m_aLandMine[nI]->GetMineNum() == -1)
				m_aLandMine[nI]->DrawItem(TRUE);
			if(m_aLandMine[nI]->GetStatus() == MS_FLAG)
				m_aLandMine[nI]->DrawItem(TRUE);
		}
		return -1;
	}
	return 1;

}

BOOL CLandMine::OpenMine(int nCurMine)
{
	int nRoundMine,nRoundMine1;
	int aMine[500];
	int nTop=0,nTail=0;
	
	aMine[nTop++] = nCurMine;
	
	while(nTop!=nTail)
	{
		int nCurrent=aMine[nTail];
		nTail = (nTail+1)%500;
		switch(m_aLandMine[nCurrent]->OpenMine())
		{
		case 0:		// Mine number is zero
			nRoundMine = GetLeft(nCurrent);
			if(nRoundMine!=-1)
			{
				aMine[nTop] = nRoundMine;
				nTop = (nTop+1)%500;
				nRoundMine1 = GetTop(nRoundMine);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区四区在线免费观看 | 九九**精品视频免费播放| 精品免费日韩av| 色婷婷亚洲精品| 国产成人欧美日韩在线电影| 色94色欧美sute亚洲线路一ni | 欧美视频中文字幕| 国产乱码精品一品二品| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲福利视频一区二区| 亚洲制服欧美中文字幕中文字幕| 欧美韩日一区二区三区四区| 国产视频一区在线观看| 精品福利在线导航| 国产免费久久精品| 国产精品久久看| 国产女同互慰高潮91漫画| 精品sm在线观看| 久久久亚洲高清| 久久精品视频网| 中文字幕欧美一| 亚洲精品免费看| 亚洲v日本v欧美v久久精品| 美女视频黄a大片欧美| 中文字幕一区二区在线播放 | 亚洲欧洲成人av每日更新| 欧美亚洲动漫精品| 日韩中文字幕区一区有砖一区| 日韩午夜av一区| 欧美日韩在线播放三区| 在线播放国产精品二区一二区四区| 欧美色男人天堂| 欧美一区二区在线播放| 久久网这里都是精品| 中文字幕成人网| 亚洲日本va午夜在线电影| 国产精品第13页| 一区二区在线看| 午夜欧美视频在线观看| 亚洲成av人片观看| 丝袜亚洲另类丝袜在线| 久久av老司机精品网站导航| 看电影不卡的网站| 国产一区二区女| 91香蕉国产在线观看软件| 在线观看视频欧美| wwwwxxxxx欧美| 亚洲欧美日韩系列| 日韩在线观看一区二区| 国产一区久久久| 成人a级免费电影| 欧美日韩一本到| 久久综合国产精品| 亚洲欧美乱综合| 国产乱一区二区| 欧美日韩中字一区| 国产性做久久久久久| 丝袜美腿亚洲色图| 99久久99久久精品国产片果冻| 91精品国产福利在线观看| 久久久久国产精品麻豆| 亚洲高清免费视频| 久久超级碰视频| 色综合色综合色综合| 26uuu欧美| 日韩av网站在线观看| 91亚洲永久精品| 国产精品素人视频| 久久不见久久见免费视频1| 在线免费av一区| 国产精品国产三级国产| 国产激情视频一区二区三区欧美 | 亚洲激情中文1区| www.欧美亚洲| 久久婷婷综合激情| 狠狠色丁香久久婷婷综合丁香| 欧美日韩日日摸| 午夜欧美2019年伦理| 日韩色视频在线观看| 免费在线视频一区| 欧美一区午夜视频在线观看| 日韩激情一二三区| 欧美一区二区三区四区高清| 午夜精品久久久久久久久久 | 欧美影院一区二区| 日韩电影在线一区二区| 欧美不卡在线视频| 波多野结衣中文字幕一区二区三区| 亚洲婷婷综合色高清在线| 91国产精品成人| 久久国产麻豆精品| 无吗不卡中文字幕| 欧美伊人久久大香线蕉综合69| 亚洲国产精品影院| 久久久精品黄色| 欧美丰满少妇xxxbbb| 国产精品99久久久久久有的能看| 国产精品毛片无遮挡高清| 日韩一二在线观看| 成人黄色在线网站| 午夜av一区二区| 中文字幕欧美区| 欧美日本高清视频在线观看| 国产一区91精品张津瑜| 亚洲影视在线观看| 久久人人97超碰com| av在线一区二区| 秋霞午夜av一区二区三区| 一区二区中文视频| 日韩三级精品电影久久久| 国产另类ts人妖一区二区| 天天操天天干天天综合网| 国产日韩欧美精品综合| 成人免费高清视频在线观看| 午夜视频一区二区三区| 国产精品网站在线观看| 精品国产一区二区三区四区四 | 久久精工是国产品牌吗| 亚洲成av人影院| 污片在线观看一区二区| 五月综合激情网| 日韩av一区二区三区四区| 香蕉影视欧美成人| 日韩和欧美一区二区| 亚洲精品视频自拍| 亚洲欧美色一区| 国产午夜精品一区二区三区视频| 欧美大片拔萝卜| 日韩免费视频一区二区| 91精品国产综合久久蜜臀| 欧美写真视频网站| 欧美午夜精品一区二区三区| 成人久久视频在线观看| 成人三级伦理片| 久久成人久久爱| 亚洲精选视频在线| 一区二区三区在线播| 亚洲h动漫在线| 视频一区二区中文字幕| 日韩电影在线看| 九九国产精品视频| 不卡av免费在线观看| 色嗨嗨av一区二区三区| 在线成人av网站| 久久综合资源网| 国产精品美女久久久久久久 | 久久国产精品免费| 久久久www成人免费毛片麻豆| 国产精品传媒入口麻豆| 曰韩精品一区二区| 免费看黄色91| 99久久久国产精品| 日韩一区二区在线看| 亚洲区小说区图片区qvod| 日本成人在线不卡视频| 成人综合在线观看| 欧美一区二区视频免费观看| 欧美激情综合在线| 日韩电影网1区2区| 色婷婷av久久久久久久| 久久精品欧美一区二区三区不卡 | 久久精品日产第一区二区三区高清版| 中文字幕一区二区三区四区| 久久99国产精品免费| 欧美日韩亚洲综合在线| 中文字幕中文字幕在线一区| 男男视频亚洲欧美| 91精品国产综合久久小美女| 亚洲精品欧美专区| 91美女福利视频| 亚洲欧美一区二区三区孕妇| 国产乱码一区二区三区| 91精品国产黑色紧身裤美女| 五月婷婷久久综合| 日本久久一区二区三区| 亚洲欧美偷拍卡通变态| 91视视频在线观看入口直接观看www | 欧美aⅴ一区二区三区视频| 欧美中文字幕一二三区视频| 亚洲欧洲精品一区二区精品久久久 | 欧美一级午夜免费电影| 免费人成黄页网站在线一区二区| 欧美刺激午夜性久久久久久久| 精品午夜久久福利影院| 国产亚洲精品精华液| 91色在线porny| 亚洲成人综合视频| 欧美成人激情免费网| 国产精品一区二区你懂的| 久久女同性恋中文字幕| 国产精品中文字幕一区二区三区| 中文字幕av资源一区| www.成人网.com| 亚洲风情在线资源站| 精品国产123| 国产精品亚洲综合一区在线观看| 亚洲国产精品ⅴa在线观看| 欧美视频在线一区| 亚洲成人av在线电影| 久久精品亚洲精品国产欧美kt∨ |