《五子棋小游戏.ppt》由会员分享,可在线阅读,更多相关《五子棋小游戏.ppt(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、五子棋小游戏五子棋小游戏程序结构程序结构 class C欢乐五子棋DlgOnEraseBkgnd(CDC*pDC)OnMouseMove(UINT nFlags,CPoint point)OnLButtonDown(UINT nFlags,CPoint point)OnLButtonUp(UINT nFlags,CPoint point)doublewin()singlewin()2 1.OnEraseBkgnd(CDC*pDC)函数(1)加载背景图:CDC memdc;CClientDC dc(this);memdc.CreateCompatibleDC(&dc);CBitmap bmp,*
2、oldbmp;CRect rc;GetClientRect(&rc);bmp.CreateCompatibleBitmap(&dc,rc.Width(),rc.Height();oldbmp=memdc.SelectObject(&bmp);Graphics graphics(memdc.m_hDC);graphics.DrawImage(bk,0,0,700,550);(2)在棋盘上画出已下的棋子:graphics.DrawImage(image1,60,360,31,31);3 for(int i=0;i15;i+)for(int j=0;jLoadCursor(IDC_CURSOR1);
3、SetCursor(m_hcursor);(2)捕捉鼠标移动使 棋子随其移动:graphics.DrawImage(image,newpoint.X-10,newpoint.Y-10,31,31);(3)同时画出已下棋子:for(int i=0;ih;i+)/画出已下子的棋子 graphics.DrawImage(image,hqzpointi.x,hqzpointi.y,31,31);(4)加载和释放内存 dc.BitBlt(0,0,rc.Width(),rc.Height(),&memdc,0,0,SRCCOPY);memdc.SelectObject(oldbmp);memdc.Dele
4、teDC();3.doublewin and singlewin函数 两个函数为判断胜负的函数,从四个方向.部分代码如下:+for(int e=1;e5;e+)+for(int j=0;jh;j+)+i+f(bqzpointj.x=bqzpointh-1.x+35*e)&(bqzpointh-1.y=bqzpointj.y)rwhite=e;break;+if(j=h-1)pd1=1;+if(pd1)pd1=0;break;+for(int qw=1;qw5;qw+)+for(int rt=0;rt=4)MessageBox(L“黑方赢 了!”);mydialog.ShowWindow(SW_
5、SHOW);4.人机算法 由于水平有限人机算法还不成熟有待修改 (1)先把棋盘上所有获胜方式存入一个结构体中 typedef struct/录入获胜表 int last;标记获胜方式是否是效 int x5;获胜方式的x坐标 int y5;WLIST;然后用for循环录入坐标代码,代码就不写了.(2)然后每下一个子将对方其对应获胜方式的last值标记为失效其值可自己定义(3)从棋盘的左到右依次计算空格的权值(黑方和白方)if(singlegame)for(int i=0;i=14;i+)for(int j=0;j=14;j+)scorepij=0;if(chessboardij=0)for(int k=0;k 572;k+)for(int z=0;z=scorepmax)/for attack;chessboardmcxmcy=2;hqzpointh.x=165+35*mcx;hqzpointh.y=18+35*mcy;move=0:q+;h+;else hqzpointh.x=165+35*mpx;hqzpointh.y=18+35*mpy;move=0;mcx=mpx;mcy=mpy;chessboardmpxmpy=2;q+;h+;部分代码省略 解释权归制作者所有谢谢观看到此结束谢谢观看到此结束!