📄 drawassist.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 + -