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

📄 draw.cpp

📁 这是一个好玩的扫雷程序,用vc实现,其亮点是位图的操作.
💻 CPP
字号:
// Draw.cpp: implementation of the CDraw class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "WinMine.h"
#include "Draw.h"
#include <cmath>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CDraw::CDraw()
{
	m_bmp.LoadBitmap(IDB_BITMAP4);
	m_bmp1.LoadBitmap(IDB_BITMAP1);
}

CDraw::~CDraw()
{

}

void CDraw::InitDraw(CDC *pDC)
{
	CDC m_mdc;

	m_mdc.CreateCompatibleDC(pDC);
	m_mdc.SelectObject(&m_bmp);
	CBrush brush;
	brush.CreateSolidBrush(RGB(100,111,109));
	pDC->SelectObject(&brush);
	pDC->Rectangle(0,0,m_nColumn*m_nWidth+12,60+m_nRow*m_nHeigth);
	for(int i = 0; i < m_nRow; i++)
		for(int j = 0; j < m_nColumn; j++)
		{
			pDC->BitBlt(6+j*m_nWidth,52+i*m_nHeigth,m_nWidth,m_nHeigth,&m_mdc,0,0,SRCCOPY);
		}
}

void CDraw::LBDownDraw(int i,int j,bool m_bEnd,CDC *pDC)
{
	CDC mdc;
	mdc.CreateCompatibleDC(pDC);
	mdc.SelectObject(&m_bmp);
	for(int m = 0; m < m_nRow; m++)
		for(int n = 0; n < m_nColumn; n++)
		{
			if(MatrixLabel[m][n])
			{
				pDC->BitBlt(6+n*m_nWidth,52+m*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,(15 - Matrix[m][n])*m_nHeigth,SRCCOPY);
				if(m_bEnd)
				{
					pDC->BitBlt(6+j*m_nWidth,52+i*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,3*m_nHeigth,SRCCOPY);
					for(int a = 0; a < m_nRow; a++)
						for(int b = 0; b < m_nColumn; b++)
						{
							if(Matrix[a][b] == -1 && (a != i || b != j))
							{
								if(R_MatrixLabel[a][b] != 1)
									pDC->BitBlt(6+b*m_nWidth,52+a*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,5*m_nHeigth,SRCCOPY);
								if(R_MatrixLabel[a][b] == 1)
									pDC->BitBlt(6+b*m_nWidth,52+a*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,m_nHeigth,SRCCOPY);
							}
							if(Matrix[a][b] != -1 && R_MatrixLabel[a][b] == 1)
								pDC->BitBlt(6+b*m_nWidth,52+a*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,4*m_nHeigth,SRCCOPY);
						}				
				}
			}   
		}
}

void CDraw::RBDownDraw(CDC *pDC)
{
	CDC mdc;
	mdc.CreateCompatibleDC(pDC);
	mdc.SelectObject(&m_bmp);
	for(int i = 0; i < m_nRow; i++)
		for(int j = 0; j < m_nColumn; j++)
		{
			if(R_MatrixLabel[i][j] == 1 && !MatrixLabel[i][j])
				pDC->BitBlt(6+j*m_nWidth,52+i*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,m_nHeigth,SRCCOPY);
			if(R_MatrixLabel[i][j] == 2 && !MatrixLabel[i][j])
				pDC->BitBlt(6+j*m_nWidth,52+i*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,2*m_nHeigth,SRCCOPY);
			if(R_MatrixLabel[i][j] == 3 && !MatrixLabel[i][j])
				pDC->BitBlt(6+j*m_nWidth,52+i*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,0,SRCCOPY);
		}
}

void CDraw::SuccessDraw(CDC * pDC)
{
	CDC mdc;
	mdc.CreateCompatibleDC(pDC);
	mdc.SelectObject(&m_bmp);
	m_bmp1.GetBitmap(&info);
	CDC mdc1;
	mdc1.CreateCompatibleDC(pDC);
	mdc1.SelectObject(&m_bmp1);

	for(int i =0 ; i < m_nRow; i++)
		for(int j = 0; j < m_nColumn; j++)
		{
			if(Matrix[i][j] == -1)
				pDC->BitBlt(6+j*m_nWidth,52+i*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,m_nHeigth,SRCCOPY);
			else
				if(MatrixLabel[i][j])
					pDC->BitBlt(6+j*m_nWidth,52+i*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,(15 - Matrix[i][j])*m_nHeigth,SRCCOPY);
		}
	pDC->BitBlt(12,10,info.bmWidth,info.bmHeight/12,&mdc1,0,11*info.bmHeight/12,SRCCOPY);
	pDC->BitBlt(12+info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc1,0,11*info.bmHeight/12,SRCCOPY);
	pDC->BitBlt(12+2*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc1,0,11*info.bmHeight/12,SRCCOPY);

}

void CDraw::DigitsDraw(CDC *pDC)
{
	m_bmp1.GetBitmap(&info);
	CDC mdc;
	mdc.CreateCompatibleDC(pDC);
	mdc.SelectObject(&m_bmp1);
	
	int num = bombs - RFlag;
	int a[3],i=0;
	
	if(num >= 10)
	{
		while(num >= 1)
		{
			a[i++] = num % 10;
			num /= 10;
		}
		for(i = 2; i >= 0; i--)
			pDC->BitBlt(12 + (2-i)*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-a[i])*info.bmHeight/12,SRCCOPY);
	}
	else
		if(num >= 0)
	{
		pDC->BitBlt(12,10,info.bmWidth,info.bmHeight/12,&mdc,0,11*info.bmHeight/12,SRCCOPY);
		pDC->BitBlt(12+info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,11*info.bmHeight/12,SRCCOPY);
		pDC->BitBlt(12+2*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-num)*info.bmHeight/12,SRCCOPY);
	}
	else
	{
		pDC->BitBlt(12,10,info.bmWidth,info.bmHeight/12,&mdc,0,0,SRCCOPY);
		int temp = abs(num);
		if(temp < 10)
		{
			pDC->BitBlt(12+info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,11*info.bmHeight/12,SRCCOPY);
			pDC->BitBlt(12+2*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-temp)*info.bmHeight/12,SRCCOPY);
		}
		else
		{
			pDC->BitBlt(12+info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-temp/10)*info.bmHeight/12,SRCCOPY);
			pDC->BitBlt(12+2*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-temp%10)*info.bmHeight/12,SRCCOPY);
		}
	}

}

void CDraw::TimeDraw(CDC *pDC)
{
	m_bmp1.GetBitmap(&info);
	CDC mdc;
	mdc.CreateCompatibleDC(pDC);
	mdc.SelectObject(&m_bmp1);
	if(m_ntime < 100)
	{
		pDC->BitBlt(m_nColumn*m_nWidth-3*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,11*info.bmHeight/12,SRCCOPY);
		if(m_ntime < 10)
		{
			pDC->BitBlt(m_nColumn*m_nWidth-2*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,11*info.bmHeight/12,SRCCOPY);
			pDC->BitBlt(m_nColumn*m_nWidth-info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-m_ntime)*info.bmHeight/12,SRCCOPY);
		}
		else
		{
			pDC->BitBlt(m_nColumn*m_nWidth-2*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-m_ntime/10)*info.bmHeight/12,SRCCOPY);
			pDC->BitBlt(m_nColumn*m_nWidth-info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-m_ntime%10)*info.bmHeight/12,SRCCOPY);
		}
	}
	else
	{
		pDC->BitBlt(m_nColumn*m_nWidth-3*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-m_ntime/100)*info.bmHeight/12,SRCCOPY);
		pDC->BitBlt(m_nColumn*m_nWidth-2*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-m_ntime/10%10)*info.bmHeight/12,SRCCOPY);
		pDC->BitBlt(m_nColumn*m_nWidth-info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-m_ntime%100)*info.bmHeight/12,SRCCOPY);
	}
}
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -