VC++MFC单机和网络版五子棋

上传人:夏** 文档编号:477412073 上传时间:2023-09-08 格式:DOC 页数:33 大小:737.50KB
返回 下载 相关 举报
VC++MFC单机和网络版五子棋_第1页
第1页 / 共33页
VC++MFC单机和网络版五子棋_第2页
第2页 / 共33页
VC++MFC单机和网络版五子棋_第3页
第3页 / 共33页
VC++MFC单机和网络版五子棋_第4页
第4页 / 共33页
VC++MFC单机和网络版五子棋_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《VC++MFC单机和网络版五子棋》由会员分享,可在线阅读,更多相关《VC++MFC单机和网络版五子棋(33页珍藏版)》请在金锄头文库上搜索。

1、五子棋五子棋是一种很受人们喜爱的游戏,它的规则简单,但玩法变化多端,富有趣味性, 适合人们消遣。这里我们就来设计一个五子棋游戏。(一) (一) 人对人游戏Q黒棋下数子1.1.游戏实现人对人游戏,其实只是对游戏规则的实现,我们只是利用五子棋游戏的规则来编程, 至于真正的游戏实现一一计算机的“智能”算法,我们将在后面讲述。五子棋的规则很简单:1, 判断是否能放下棋子(是否已经有了棋子);2, 判断是哪种颜色下棋;3, 判断是否已经结束(是谁赢?)这些规则,我们将用相应的函数来实现。其它,我们还将介绍其它一些功能的实现。如鼠标的更换,工具栏和状态栏的编辑, 类与类之间的相互调用。新建工程3_1,选择

2、单文档,在 Step 4 of 6中先中 Windows Sockets复选框。如下图:图 3-1-12. 2.资源编辑由于我们这个程序出现的关于资源编辑的内容太多,我们具体介绍如下: 见下图3-1-2,我们需要添加的有:Jffj 0出,缶 电旷 彳 ”卩43|4 0 jR |umnTO&e-na-Jzlr _j 31 resources 1;+ ._ AcccItMlnr白圆BitmapjS IDBJLACK IDE _WHITfF LoadCursor(IDC_CURSOR1); hcursorwhite=AfxGetApp()-LoadCursor(IDC_CURSOR2); m_bmw

3、hite.LoadBitmap(IDB_WHITE); m_bmblack.LoadBitmap(IDB_BLACK);/清理棋盘/数组值为 0 表示没有棋子for(int i=0;i19;i+)for(int j=0;jFillRect(myrect1,&mybrush1);/画棋盘框线CPen mypen; CPen*myoldPen; mypen.CreatePen(PS_SOLID,1,RGB(0,0,0); myoldPen=pDC-SelectObject(&mypen);for(int i=0;iMoveTo(40,40+i*20); pDC-LineTo(400,40+i*20

4、);pDC-MoveTo(40+i*20,40); pDC-LineTo(40+i*20,400);/重画时显示存在的棋子CDC Dc;if(Dc.CreateCompatibleDC(pDC)=FALSE)AfxMessageBox(Cant create DC);for(int n=0;n19;n+)for(int m=0;mBitBlt(n*20+32,m*20+32,160,160,&Dc,0,0,SRCCOPY);else if(wzqnm=-1)/显示黑棋Dc.SelectObject(m_bmblack);pDC-BitBlt(n*20+32,m*20+32,160,160,&D

5、c,0,0,SRCCOPY);设置鼠标:棋盘画好了, 接下来就是下棋了。 但鼠标并没有像我们上面说的那样变成白棋, 函数如下:BOOL CMy3_1View:OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)/ TODO: Add your message handler code here and/or call default if(nHitTest=HTCLIENT)/白棋下,显示白棋鼠标if(colorwhite)/调用主框架里面的状态栏CMainFrame*pFrm=(CMainFrame*)AfxGetApp()-m_pMain

6、Wnd; CStatusBar*pStatus=&pFrm-m_wndStatusBar;if(pStatus)pStatus-GetStatusBarCtrl().SetIcon(0,AfxGetApp()-LoadIcon(IDI_WHITE); pStatus-SetPaneText(O,白棋下);SetCursor(hcursorwhite);/显示黑棋鼠标elseSetCursor(hcursorblack);CMainFrame*pFrm=(CMainFrame*)AfxGetApp()-m_pMainWnd;CStatusBar*pStatus=&pFrm-m_wndStatus

7、Bar;if(pStatus)/显示图像pStatus-GetStatusBarCtrl().SetIcon(0,AfxGetApp()-LoadIcon(IDI_BLACK);/显示文字pStatus-SetPaneText(O,黑棋下);return 1;return CView:OnSetCursor(pWnd, nHitTest, message);现在运行程序,怎样,鼠标变成白棋了, 而且下面的状态栏也能够显示鼠标状态了, 真是一举两得。可是,又该怎样把棋子放在棋盘上呢?下棋操作:这就涉及到 OnLButtonDown(UINT nFlags, CPoint point) 和 OnLButtonUp(UINT nFlags, CPoint point) 两个函数了。要用哪一个或用两个?用 Down 函数时是在鼠标按下 时放下棋子,可是,要是我们按下后意识到按错了怎么办;那就改用Up 函数,表示当鼠标键松开时放下棋子。 OK !添加函数如下:void CMy3_1View:OnLBut

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号