资源简介
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个文件信息
- 上一篇:51单片机C语言程序设计教程 王云书本PDF样章
- 下一篇:C++ STL参考手册
相关资源
- MFC中点圆的生成算法
- Microsoft Visual C++ 2005 Redistributable Pack
- MFC动态折线图
- MFC信息管理系统
- VS2008 opencv MFC 计算米粒的个数及最大
- mfc 画图直线、圆、椭圆
- mfc实现扫雷194704
- MFC基于逆波兰算法的四则运算计算器
- MFC物流订单管理系统
- 深入浅出MFC第二版光盘
- 基于MFC的 数字相册
- IP数据包捕获解析程序
- 纯mfc绘图制做三维仿真图形魔方
- MFC超市管理系统
- 语音识别的算法实现C++
- 基于MFC的流程图绘制工具
- MFC richedit可进行插入图片、表情,有
- VS2010MFC利用TeeChart绘制瀑布图三维图
- MFC实现FTP上传文件的客户端和服务器
- MFC 实现画线 画图形 移动删除图形
- UG二次开发用户界面(MFC简单)
- 最短路径用Dijkstra算法实现的MFC编程
- 基于MFCC的GMM的语音识别
- MFC串口接收数据并实时显示
- MFC实现AES非对称加密解密算法
- 鸡啄米:VS2010MFC编程入门教程.pdf
- MFC使用ado连接access数据库例程
- MFC 基于对话框 菜单栏的选择对号标记
- 基于MFC的端口扫描器含源代码
- MFC邮件客户端毕业设计改进版 张鹏
评论
共有 条评论