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