• 大小: 1.9MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-20
  • 语言: C/C++
  • 标签: MFC  五子棋  VS2013  

资源简介

MFC 五子棋 VS2013。实现功能:悔棋、动态调整棋盘、棋谱保存与播放

资源截图

代码片段和文件信息

#include “stdafx.h“
#include “ChessCenter.h“
#include “tool/GDIPlusEx.h“

CChessCenter::CChessCenter(int row int col)
: m_nRow(row) m_nCol(col)
{
m_ChessInfo = new tChessItem*[m_nRow]; 
for (int i = 0; i < m_nRow; ++i)
{
m_ChessInfo[i] = new tChessItem[m_nCol];
}

Reset();
}

CChessCenter::~CChessCenter()
{
for (int i = 0; i < m_nRow; ++i)
{
delete[] m_ChessInfo[i];
}
delete m_ChessInfo;
}

void CChessCenter::Reset()
{
m_bBlackIndex = true;
m_ChessQueue.clear();

for (int i = 0; i < m_nRow; ++i)
{
for (int j = 0; j < m_nCol; ++j)

m_ChessInfo[i][j].type = ITEM_TYPE_NONE;
}
}
}

bool CChessCenter::UndoChess()
{
if (m_ChessQueue.empty())
return false;

unsigned sz = m_ChessQueue.size();
tSaveItem item = m_ChessQueue.at(sz - 1);

m_ChessInfo[item.x][item.y].type = ITEM_TYPE_NONE;
m_ChessQueue.erase(m_ChessQueue.end() - 1);
m_bBlackIndex = !m_bBlackIndex;

return true;
}

void CChessCenter::UpdatePosition(CRect& rc)
{
for (int i = 0; i < m_nRow; ++i)
{
for (int j = 0; j < m_nCol; ++j)
{
float left = float(j * rc.Width()) / m_nCol;
float right = float((j + 1) * rc.Width()) / m_nCol;
float top = float(i * rc.Height()) / m_nRow;
float bottom = float((i + 1) * rc.Height()) / m_nRow;

m_ChessInfo[i][j].position = CRect((int)left (int)top (int)right (int)bottom);  
}
}
}

void CChessCenter::DrawChess(CDC& dc CRect& rc)

dc.FillSolidRect(&rc RGB(150 150 150));

// 画棋盘的水平线条
CRect rcTemp = rc; 
rc.bottom -= 1; 
for (int i = 0; i <= m_nRow; ++i)
{
float y = float(i * rc.Height()) / m_nRow; 

CPoint pt1(rc.left (long)y);
CPoint pt2(rc.right (long)y);

dc.MoveTo(pt1);
dc.LineTo(pt2);
}

// 画棋盘的垂直线条
rcTemp = rc;
rc.right -= 1;
for (int i = 0; i <= m_nCol; ++i)
{
float x = float(i * rc.Width()) / m_nCol;

CPoint pt1((long)x rc.top);
CPoint pt2((long)x rc.bottom);

dc.MoveTo(pt1);
dc.LineTo(pt2);
}

// 画棋子
CGDIPlus gdip;
for (int i = 0; i < m_nRow; ++i)
{
for (int j = 0; j < m_nCol; ++j)
{  
switch (m_ChessInfo[i][j].type)
{
case ITEM_TYPE_BLACK:
gdip.usFillRound(dc.m_hDC TestChessRect(m_ChessInfo[i][j].position) RGB(0 0 0) TRUE);
break;
case ITEM_TYPE_WHITE:
gdip.usFillRound(dc.m_hDC TestChessRect(m_ChessInfo[i][j].position) RGB(255 255 255) TRUE);
break;
default:
break;
}
}
}
 
// 画五连子的连线(如果有五连子)
tChessItem start end;
if (CheckEnd(start end))
{
CPoint pt1;
pt1.x = start.position.left + start.position.Width() / 2;
pt1.y = start.position.top + start.position.Height() / 2;

CPoint pt2;
pt2.x = end.position.left + end.position.Width() / 2;
pt2.y = end.position.top + end.position.Height() / 2;

CPen pen(PS_SOLID 4 RGB(255 0 0));
dc.Selectobject(pen);
dc.MoveTo(pt1);
dc.LineTo(pt2);
}
}

CRect CChessCenter::TestChessRect(CRect& rc)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件     3651072  2017-05-15 12:11  ChessDemo.exe
     目录           0  2017-05-15 12:12  VS2013-ChessDemo-五子棋\
     文件        5893  2017-05-12 16:45  VS2013-ChessDemo-五子棋\ChessCenter.cpp
     文件         881  2017-05-12 17:23  VS2013-ChessDemo-五子棋\ChessCenter.h
     文件        3463  2017-05-15 11:43  VS2013-ChessDemo-五子棋\ChessDemo.cpp
     文件         523  2017-05-12 13:14  VS2013-ChessDemo-五子棋\ChessDemo.h
     文件       14970  2017-05-15 12:10  VS2013-ChessDemo-五子棋\ChessDemo.rc
     文件        6671  2017-05-15 11:22  VS2013-ChessDemo-五子棋\ChessDemo.vcxproj
     文件        3540  2017-05-15 11:22  VS2013-ChessDemo-五子棋\ChessDemo.vcxproj.filters
     文件        3784  2017-05-14 16:06  VS2013-ChessDemo-五子棋\ChessDemoDlg.cpp
     文件        1094  2017-05-12 16:11  VS2013-ChessDemo-五子棋\ChessDemoDlg.h
     文件        6809  2017-05-15 11:19  VS2013-ChessDemo-五子棋\ChessView.cpp
     文件        1131  2017-05-15 11:19  VS2013-ChessDemo-五子棋\ChessView.h
     文件        4516  2017-05-15 12:11  VS2013-ChessDemo-五子棋\MessageNote.cpp
     文件         643  2017-05-15 12:09  VS2013-ChessDemo-五子棋\MessageNote.h
     文件        4692  2017-05-12 13:14  VS2013-ChessDemo-五子棋\ReadMe.txt
     目录           0  2017-05-15 12:10  VS2013-ChessDemo-五子棋\res\
     文件        2730  2017-05-15 11:22  VS2013-ChessDemo-五子棋\resource.h
     文件        1150  2017-05-14 16:07  VS2013-ChessDemo-五子棋\res\b.ico
     文件       67777  2013-07-22 01:18  VS2013-ChessDemo-五子棋\res\ChessDemo.ico
     文件         802  2017-05-12 13:14  VS2013-ChessDemo-五子棋\res\ChessDemo.rc2
     文件         326  2017-05-14 16:28  VS2013-ChessDemo-五子棋\res\cursor1.cur
     文件         326  2017-05-14 16:28  VS2013-ChessDemo-五子棋\res\cursor2.cur
     文件      302638  2017-05-15 12:10  VS2013-ChessDemo-五子棋\res\note.png
     文件        1150  2017-05-14 16:08  VS2013-ChessDemo-五子棋\res\w.ico
     文件         211  2017-05-12 13:14  VS2013-ChessDemo-五子棋\stdafx.cpp
     文件        1909  2017-05-14 15:48  VS2013-ChessDemo-五子棋\stdafx.h
     文件         314  2017-05-12 13:14  VS2013-ChessDemo-五子棋\targetver.h
     目录           0  2017-05-12 14:57  VS2013-ChessDemo-五子棋\tool\
     文件       30287  2015-03-27 17:24  VS2013-ChessDemo-五子棋\tool\GDIPlusEx.cpp
     文件       13889  2015-10-15 13:32  VS2013-ChessDemo-五子棋\tool\GDIPlusEx.h
............此处省略1个文件信息

评论

共有 条评论