使用MFC实现五子棋
来源:互联网 发布:网络架构师下载 编辑:程序博客网 时间:2024/06/06 01:13
使用MFC实现五子棋
本篇博文介绍使用MFC实现五子棋游戏,实现了五子棋的对弈、菜单栏、工具栏以及状态栏。
主界面
菜单栏
工具栏
底部状态栏
下面是核心代码,落子之后判断胜负:
void CMy05gobangView::OnLButtonUp(UINT nFlags, CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 while(bWin) { ::MessageBox(NULL,_T("Black Win!"),_T("Game Over"),MB_OK); return; } while(wWin) { ::MessageBox(NULL,_T("White Win!"),_T("Game Over"),MB_OK); return; } CDC *pDC; pDC = GetDC(); CBrush brush; brush.CreateSolidBrush(RGB(0,0,0)); CBrush *pOldBrush; CBrush brush2; brush2.CreateSolidBrush(RGB(255,255,255)); CBrush *pOldBrush2; int _x = point.x - (point.x%40); int _y = point.y - (point.y%40); if(point.x%40>20) { _x = _x + 40; } if(point.y%40>20) { _y = _y + 40; } int _m = _x/40; int _n = _y/40; if(point.x>40 && point.x < 600 &&point.y>40 && point.y<600) { if(i % 2 == 0&&ellipse[_m][_n]!=1&&ellipse[_m][_n]!=-1) { pOldBrush2 = pDC->SelectObject(&brush2); pDC->Ellipse(_x-15,_y-15,_x+15,_y+15); pDC->SelectObject(pOldBrush2); ellipse[_m][_n] = -1; m2 = _m; n2 = _n; i++; }else if(i % 2 == 1 && ellipse[_m][_n]!=1 && ellipse[_m][_n]!=-1){ pOldBrush = pDC->SelectObject(&brush); pDC->Ellipse(_x-15,_y-15,_x+15,_y+15); pDC->SelectObject(pOldBrush); ellipse[_m][_n] = 1; m1=_m; n1 = _n; i++; } } if((m1 != 0 && n1 !=0) || (m2 !=0 && n2 != 0)) { isEditUndoClick = false; isSaveGameClick = true; } vertial(_m,_n); horizontal(_m,_n); left(_m,_n); right(_m,_n);}void CMy05gobangView::vertial(int x,int y){ int xx,yy; if(x < 5) { xx = 0; }else{ xx = x-5; } if(y < 5) { yy = 0; }else{ yy = y-5; } int i,j,a; //竖向判断 for(i = yy;i<15;i++) { a = 0; for(j = i;j < i+5;j++) { a = a+ellipse[x][j]; if(a >= 5) { ::MessageBox(NULL,_T("Black Win!"),_T("Game Over"),MB_OK); bWin = true; return; } if(a <= -5) { ::MessageBox(NULL,_T("White Win!"),_T("Game Over"),MB_OK); wWin = true; return; } } }}void CMy05gobangView::horizontal(int x,int y){ int xx,yy; if(x < 5) { xx = 0; }else{ xx = x-5; } if(y < 5) { yy = 0; }else{ yy = y-5; } int i,j,a; //横向判断 for(i = xx;i < 15;i++) { a = 0; for(j = i;j<i+5;j++) { a = a+ellipse[j][y]; //五个都是黑棋 if(a >= 5) { ::MessageBox(NULL,_T("Black Win!"),_T("Game Over"),MB_OK); bWin = true; return; } //五个都是黑棋 if(a <= -5) { ::MessageBox(NULL,_T("White Win!"),_T("Game Over"),MB_OK); wWin = true; return; } } }}void CMy05gobangView::left(int x,int y){ int xx,yy; if(x < 4) { xx = 0; }else{ xx = x-4; } if(y < 4) { yy = 0; }else{ yy = y-4; } int i,j,a; //向右下角 //判断起点位置 if(x < y) { if(xx == 0) { yy = y -x; } }else{ if( yy == 0) { xx = x - y; } } int over = 0; do{ a = 0; for(i=0;i<5;i++){ if((xx+i)<19||(yy+i)<19) { a=a+ellipse[xx+i][yy+i]; if(a==5){ ::MessageBox(NULL,_T("Black Win!"),_T("Game Over"),MB_OK); bWin = true; return; } if(a==-5){ ::MessageBox(NULL,_T("White Win!"),_T("Game Over"),MB_OK); wWin = true; return; } }else { over = 1; } } xx = xx + 1; yy = yy + 1; }while(over == 0);}void CMy05gobangView::right(int x,int y){ int xx,yy; if(x < 4) { xx = 0; }else{ xx = x-4; } if(y < 4) { yy = 0; }else{ yy = y-4; } int i,j,a; //向左下角 if(y > (18-x)) { if(x > 13) { yy = y -(18-x); xx = 18; } else{ yy = y-4; xx = x + 4; } }else{ if(y < 5) { xx = x + y; yy = 0; }else{ yy = y -4; xx = x + 4; } } int over = 0; do{ a = 0; for(int i = 0;i < 5;i++) { if((xx-i)>=0||(yy+i)<19) { a = a+ellipse[xx-i][yy+i]; if(a==5){ ::MessageBox(NULL,_T("Black Win!"),_T("Game Over"),MB_OK); bWin = true; return; } if(a==-5){ ::MessageBox(NULL,_T("White Win!"),_T("Game Over"),MB_OK); wWin = true; return; } }else{ over =1; } } xx = xx-1; yy = yy+1; }while(over == 0);}
最后,附上GitHub链接
阅读全文
0 0
- 使用MFC实现五子棋
- 使用MFC制作五子棋游戏
- C++五子棋的实现(MFC)
- MFC五子棋
- 基于opencv与MFC实现的双人五子棋
- 使用vb.net实现五子棋的人工智能五子棋的AI构想
- 使用WPF技术实现基于MSN协议的五子棋程序
- MFC设计局域网对战五子棋游戏(二)实现GDI+自绘按钮
- 五子棋设计与实现
- VB.net实现五子棋
- 五子棋算法实现
- QQ五子棋外挂实现
- 如何实现简单五子棋?
- C实现的五子棋
- 一步一步实现五子棋1
- 一步一步实现五子棋2
- 一步一步实现五子棋3
- 一步一步实现五子棋4
- 输入两个链表,找出它们的第一个公共结点
- SpringMVC起步-构建Web应用程序
- 岛国科普第2弹-再造人类生命的神奇细胞Human.Life.Our.Amazing.Cell
- js-时间处理
- 【C++】重载“<<"操作符和关键字static!!!
- 使用MFC实现五子棋
- 368. Largest Divisible Subset
- 有一件事我想说
- 博弈知识汇总----Tanky Woo(转)
- myeclipse js文件报错
- 中国科学院大学(国科大)未选课程加入课程网站(旁听蹭课专用!!!)
- dubbo+zookeeper安装配置
- 关于作者
- 20170914_字符串的输入问题