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

📄 gobangdrawer.cpp

📁 一个小游戏五子棋的浙江大学开发我的课程设计
💻 CPP
字号:
#include "stdafx.h"
#include "GobangDrawer.h"

CGobangDrawer::CGobangDrawer()
{
	for( int row = 0; row < 15; row++)
		for( int col = 0; col < 15; col++)
		{
			Chess[row][col] = 0;
		}
}

bool CGobangDrawer::Draw(CDC* pDC)
{
	ChessLeft = 65;
	ChessTop = 50;
	ChessWidth = 21;
	ChessRect.SetRect(60,45,365,350);
	

	//把位图保存在内存中
	//Bitmap.LoadBitmap(IDB_BITMAP);
	//Bitmap.GetBitmap(&BMPstruct);
	//把位图设置成背景
	//CDC *pMemDC=new CDC;
	//pMemDC->CreateCompatibleDC(pDC);
	//pMemDC->SelectObject(&Bitmap);
	//pDC->BitBlt(0,0,BMPstruct.bmWidth,BMPstruct.bmHeight,pMemDC,0,0,SRCCOPY);
	//delete pMemDC;

	//为棋盘着色
	/*CBrush brush( RGB(235,164,84) );
	CBrush *pOldbrush = pDC->SelectObject(&brush);
	pDC->PatBlt(ChessRect.left, ChessRect.top, ChessRect.Width(), 
					ChessRect.Height(), PATCOPY );
	pDC->SelectObject(pOldbrush);*/
	//画棋盘
	UINT Left = ChessLeft;
	UINT Top = ChessTop;
	UINT Width = ChessWidth;
	UINT Right = Left+14*Width;
	UINT Bottom = Top+14*Width;
	CPen BlackPen(PS_SOLID,1,RGB(0,0,0));
	CPen BoldBlackPen(PS_SOLID,3,RGB(0,0,0));
	CPen WhitePen(PS_SOLID,1,RGB(255,255,255));
	CPen BoldWhitePen(PS_SOLID,3,RGB(225,225,225));
	CPen YellowPen(PS_SOLID,1,RGB(200,200,0));
	CPen *pOldPen=pDC->SelectObject(&YellowPen);
	CBrush Brush(RGB(200,200,0));
	CBrush *pOldBrush=pDC->SelectObject(&Brush);
	int i,j;
	 
	pDC->SelectObject(&BoldWhitePen);
	pDC->MoveTo(ChessRect.TopLeft());
	pDC->LineTo(ChessRect.right,ChessRect.top);
	pDC->MoveTo(ChessRect.TopLeft());
	pDC->LineTo(ChessRect.left,ChessRect.bottom);
	pDC->SelectObject(&BoldBlackPen);
	pDC->MoveTo(ChessRect.right,ChessRect.bottom);
	pDC->LineTo(ChessRect.right,ChessRect.top+1);
	pDC->MoveTo(ChessRect.right,ChessRect.bottom);
	pDC->LineTo(ChessRect.left+1,ChessRect.bottom);
	pDC->SetPixel(ChessRect.left-1,ChessRect.bottom+1,RGB(0,0,0));
	pDC->SetPixel(ChessRect.left,ChessRect.bottom-1,RGB(255,255,255));
	pDC->SetPixel(ChessRect.right+1,ChessRect.top-1,RGB(0,0,0));
	pDC->SetPixel(ChessRect.right-1,ChessRect.top,RGB(255,255,255));
	for(i=0;i<15;i++)
	{	pDC->SelectObject(&BlackPen);
		pDC->MoveTo(Left+i*Width,Top);
		pDC->LineTo(Left+i*Width,Bottom);
		pDC->MoveTo(Left,Top+i*Width);
		pDC->LineTo(Right,Top+i*Width);
		pDC->SelectObject(&WhitePen);
		pDC->MoveTo(Left+i*Width+1,Top+1);
		pDC->LineTo(Left+i*Width+1,Bottom-1);
		pDC->MoveTo(Left+1,Top+i*Width+1);
		pDC->LineTo(Right-1,Top+i*Width+1);
	}


	//画出棋子的信息
	for( i = 0; i < 15; i++)
	{
		for( j = 0; j < 15; j++ )
		{
			if( Chess[i][j] == 0 )
				continue;
			else if( Chess[i][j] == 1 )		//是黑棋
			{
				pDC->SelectStockObject(BLACK_PEN);
				pDC->SelectStockObject(BLACK_BRUSH);
				pDC->Ellipse(Left+j*Width-10,Top+i*Width-10,
					Left+j*Width+10,Top+i*Width+10);
				pDC->SelectStockObject(WHITE_PEN);
				pDC->Arc(Left+j*Width+7,Top+i*Width-8,Left+j*Width-8,
					Top+i*Width+8,Left+j*Width+7,Top+i*Width-8,Left+j*Width-8,
					Top+i*Width+8);
			}
			else			//画白棋
			{
				CPen GrayPen(PS_SOLID,1,RGB(240,240,240));
				CBrush GrayBrush(RGB(255,255,255));
				pDC->SelectObject(&GrayPen);
				pDC->SelectObject(&GrayBrush);
				pDC->Ellipse(Left+j*Width-10,Top+i*Width-10,
					Left+j*Width+10,Top+i*Width+10);
				pDC->SelectStockObject(BLACK_PEN);
				pDC->Arc(Left+j*Width-7,Top+i*Width+8,Left+j*Width+8,
					Top+i*Width-8,Left+j*Width-7,Top+i*Width+8,Left+j*Width+8,
					Top+i*Width-8);
			}

		}
	}					//for clause

	return true;
}

//更新棋盘信息
bool CGobangDrawer::SetBoard( const char* pBoard )
{
	int i, j;
	int k = 0;

	for( i = 0; i < 15; i++ )
		for( j = 0; j < 15; j++ )
		{	
			Chess[i][j] = pBoard[k];
			k++;
		}
	return true;
}

⌨️ 快捷键说明

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