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

📄 drawassist.cpp

📁 用MFC做的简单的俄罗斯方块。功能都已经实现。但是没有考虑算法。希望大家指教。
💻 CPP
字号:
// DrawAssist.cpp: implementation of the DrawAssist class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "aa.h"
#include "DrawAssist.h"
#include "Block.h"

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

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

DrawAssist::DrawAssist()
{
	
	height=15;
	for(int i=0;i<10;i++)
		for(int j=0;j<20;j++)
			blocks[i][j]=false;
}

DrawAssist::~DrawAssist()
{
	
}

void DrawAssist::DrawButton(int x, int y)
{
	CBitmap* pBitmap = new CBitmap;
	BITMAP BmpInfo;
	CBitmap* pOldBitmap;
	
	
	pBitmap->LoadBitmap(IDB_BITMAP2);
	pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
	pBitmap->GetBitmap(&BmpInfo);
	
	// x,y为绘图位置 ,必要时此语句要有For(..;..;..)控制
	pDC->BitBlt(x*height,y*height, BmpInfo.bmWidth, BmpInfo.bmHeight, pDisplayMemDC, 0, 0, SRCCOPY); 
	
	pDisplayMemDC->SelectObject(pOldBitmap);
	pBitmap->DeleteObject();
	
	
	delete pBitmap;   
}



void DrawAssist::DrawChessBox()//设置背景方格
{
	for(int i=0;i<10;i++)
		for(int j=0;j<20;j++)
		{
			if(blocks[i][j])
				DrawButton(i,j);
		}
}



void DrawAssist::DrawBlock(Block &block)//画方格
{
	CPoint* p = block.GetMembers();
	for(int i=0;i<4;i++)
		DrawButton(p[i].x,p[i].y);
}

void DrawAssist::SetDC(CDC *pDC, CDC *pDisplayMemDC)
{
	this->pDC = pDC;
	this->pDisplayMemDC = pDisplayMemDC;
}

BOOL DrawAssist::CanMoveDown(Block& block)//下移条件
{
	CPoint* p = block.GetMembers();
	for(int i=0;i<4;i++)
	{
		if(p[i].y>=19)return false;
		if(blocks[p[i].x][p[i].y+1])
			return false;
	}
		return true;
}
BOOL DrawAssist::CanMoveLeft(Block &block)//左移条件
{
	CPoint* p = block.GetMembers();
	for(int i=0;i<4;i++)
	{
		if(p[i].x<=0)return false;
		if((blocks[p[i].x-1][p[i].y]))
			return false;
	}
		return true;
}


BOOL DrawAssist::CanMoveRight(Block &block)//右移条件
{
	CPoint* p = block.GetMembers();
	for(int i=0;i<4;i++)
	{
		if(p[i].x>=9)return false;
		if((blocks[p[i].x+1][p[i].y]))
			return false;
	}
		return true;
}

void DrawAssist::AddBlock(Block &block)//填加方格
{
	CPoint* p = block.GetMembers();
	for(int i=0;i<4;i++)
	{
		blocks[p[i].x][p[i].y]=true;
	}
}




⌨️ 快捷键说明

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