📄 plate.cpp
字号:
// Plate.cpp: implementation of the CPlate class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "My.h"
#include "Plate.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
// 棋盘类的成员函数
// 构造函数: 初始化
CPlate::CPlate()
{
m_ndx = 50;
m_ndy = 45;
m_nLeft = 198;
m_nTop = 30;
m_nRight = m_nLeft+m_ndx*8;
m_nBottom = m_nTop+m_ndy*9;
}
// 显示棋盘
void CPlate::ShowPlate(CDC *pDC)
{
// 画棋盘方格
CPen penRed2(PS_SOLID,2,RGB(255,0,0));
CPen *pOldPen = pDC->SelectObject(&penRed2);
for(int i=0; i<10; i++)
{
pDC->MoveTo(m_nLeft, m_nTop+i*m_ndy);
pDC->LineTo(m_nRight, m_nTop+i*m_ndy);
}
for(i=0; i<9; i++)
{
if(i==0 || i==8)
{
pDC->MoveTo(m_nLeft+i*m_ndx, m_nTop);
pDC->LineTo(m_nLeft+i*m_ndx, m_nBottom);
}
else{
pDC->MoveTo(m_nLeft+i*m_ndx, m_nTop);
pDC->LineTo(m_nLeft+i*m_ndx, m_nTop+4*m_ndy);
pDC->MoveTo(m_nLeft+i*m_ndx, m_nTop+5*m_ndy);
pDC->LineTo(m_nLeft+i*m_ndx, m_nBottom);
}
}
// 画棋盘斜线
pDC->SelectObject(pOldPen);
CPen penRed1(PS_SOLID,1,RGB(255,0,0));
pOldPen = pDC->SelectObject(&penRed1);
pDC->MoveTo(m_nLeft+3*m_ndx, m_nTop);
pDC->LineTo(m_nLeft+5*m_ndx, m_nTop+2*m_ndy);
pDC->MoveTo(m_nLeft+3*m_ndx, m_nTop+2*m_ndy);
pDC->LineTo(m_nLeft+5*m_ndx, m_nTop);
pDC->MoveTo(m_nLeft+3*m_ndx, m_nBottom);
pDC->LineTo(m_nLeft+5*m_ndx, m_nBottom-2*m_ndy);
pDC->MoveTo(m_nLeft+3*m_ndx, m_nBottom-2*m_ndy);
pDC->LineTo(m_nLeft+5*m_ndx, m_nBottom);
pDC->SelectObject(pOldPen);
// 画兵, 炮位标记
DrawConer(pDC, 2, 1, 0);
DrawConer(pDC, 2, 7, 0);
DrawConer(pDC, 3, 0, 1);
DrawConer(pDC, 3, 2, 0);
DrawConer(pDC, 3, 4, 0);
DrawConer(pDC, 3, 6, 0);
DrawConer(pDC, 3, 8, 2);
DrawConer(pDC, 7, 1, 0);
DrawConer(pDC, 7, 7, 0);
DrawConer(pDC, 6, 0, 1);
DrawConer(pDC, 6, 2, 0);
DrawConer(pDC, 6, 4, 0);
DrawConer(pDC, 6, 6, 0);
DrawConer(pDC, 6, 8, 2);
}
// 绘制兵, 炮位标志
void CPlate::DrawConer(CDC *pDC, int row, int col, int type)
{
CPen penRed1(PS_SOLID,1,RGB(255,0,0));
CPen *pOldPen = pDC->SelectObject(&penRed1);
if(type == 0 || type == 1)
{
pDC->MoveTo(m_nLeft+col*m_ndx+ 3, m_nTop+row*m_ndy-10);
pDC->LineTo(m_nLeft+col*m_ndx+ 3, m_nTop+row*m_ndy-3);
pDC->LineTo(m_nLeft+col*m_ndx+10, m_nTop+row*m_ndy-3);
pDC->MoveTo(m_nLeft+col*m_ndx+ 3, m_nTop+row*m_ndy+10);
pDC->LineTo(m_nLeft+col*m_ndx+ 3, m_nTop+row*m_ndy+3);
pDC->LineTo(m_nLeft+col*m_ndx+10, m_nTop+row*m_ndy+3);
}
if(type == 0 || type == 2)
{
pDC->MoveTo(m_nLeft+col*m_ndx- 3, m_nTop+row*m_ndy-10);
pDC->LineTo(m_nLeft+col*m_ndx- 3, m_nTop+row*m_ndy-3);
pDC->LineTo(m_nLeft+col*m_ndx-10, m_nTop+row*m_ndy-3);
pDC->MoveTo(m_nLeft+col*m_ndx- 3, m_nTop+row*m_ndy+10);
pDC->LineTo(m_nLeft+col*m_ndx- 3, m_nTop+row*m_ndy+3);
pDC->LineTo(m_nLeft+col*m_ndx-10, m_nTop+row*m_ndy+3);
}
pDC->SelectObject(pOldPen);
}
// 取棋盘上各交叉点的坐标
CPoint CPlate::GetPosition(int col, int row)
{
CPoint point;
point.x = m_nLeft+col*m_ndx;
point.y = m_nTop+row*m_ndy;
return point;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -