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

📄 stone.cpp

📁 VC面向对象的学习教程
💻 CPP
字号:
// Stone.cpp: implementation of the CStone class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "My.h"
#include "Stone.h"

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

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

// 棋子类的成员函数
// 棋子类的构造函数:初始化棋子
CStone::CStone(BOOL red, int col, int row, LPCSTR name, int type, CPlate &plate)
{
	m_bShow	= TRUE;
	m_bSelected 	= FALSE;
	m_bRed		= red;
	m_nCol		= col;
	m_nRow	= row;
	m_sName	= name;
	m_nType	= type;
	m_nR		= 23;
	CPoint pos 	= plate.GetPosition(col, row);
	m_rectStone	 = CRect(pos.x-m_nR, pos.y-m_nR, pos.x+m_nR, pos.y+m_nR);
}
// 显示棋子
void CStone::ShowStone(CDC *pDC)
{
	if(m_bShow)	// 只有未被吃掉的棋子才显示
	{
		// 准备画棋子的画笔和画刷
		CPen *pOldPen, penNormal(PS_SOLID, 3, RGB(120, 120, 120));
		CBrush *pOldBrush, brushNormal, brushSelected;
		brushNormal.CreateSolidBrush(RGB(255, 255, 0));
		brushSelected.CreateSolidBrush(RGB(127, 127, 0));
		pOldPen = pDC->SelectObject(&penNormal);
		// 被选中的棋子颜色不同
		if(m_bSelected)
			pOldBrush = pDC->SelectObject(&brushSelected);
		else
			pOldBrush = pDC->SelectObject(&brushNormal);
		// 显示棋子
		CRect r(m_rectStone);
		r.left	++;
		r.top	++;
		r.right	--;
		r.bottom--;
		pDC->Ellipse(r);
		pDC->SelectObject(pOldPen);
		pDC->SelectObject(pOldBrush);
		// 准备显示棋子名称的字体
		CFont *pOldFont, fontStone;
		fontStone.CreateFont(40, 0, 0, 0, 400, FALSE, FALSE,
			0, OEM_CHARSET, OUT_DEFAULT_PRECIS,
			CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
			DEFAULT_PITCH, "楷体");
		pOldFont = pDC->SelectObject(&fontStone);
		int tx = m_rectStone.left+6;
		int ty = m_rectStone.top+6;
		pDC->SetBkMode(TRANSPARENT);
		// 棋子背景均为黄色,字分红、黑两色
		pDC->SetTextColor(RGB(m_bRed?255:0, 0, 0));
		pDC->TextOut(tx, ty, m_sName);
		pDC->SelectObject(pOldFont);
	}
}
// 将棋子放到指定位置
void CStone::MoveTo(int col, int row, CPlate &plate)
{
	m_bSelected 	= FALSE;
	m_nCol		= col;
	m_nRow	= row;
	CPoint pos	= plate.GetPosition(col, row);
	m_rectStone = CRect(pos.x-m_nR, pos.y-m_nR, pos.x+m_nR, pos.y+m_nR);
}

⌨️ 快捷键说明

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