MFC课程设计报告一个简单的五子棋游戏Word版

上传人:桔**** 文档编号:500783881 上传时间:2023-09-06 格式:DOC 页数:32 大小:125.50KB
返回 下载 相关 举报
MFC课程设计报告一个简单的五子棋游戏Word版_第1页
第1页 / 共32页
MFC课程设计报告一个简单的五子棋游戏Word版_第2页
第2页 / 共32页
MFC课程设计报告一个简单的五子棋游戏Word版_第3页
第3页 / 共32页
MFC课程设计报告一个简单的五子棋游戏Word版_第4页
第4页 / 共32页
MFC课程设计报告一个简单的五子棋游戏Word版_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《MFC课程设计报告一个简单的五子棋游戏Word版》由会员分享,可在线阅读,更多相关《MFC课程设计报告一个简单的五子棋游戏Word版(32页珍藏版)》请在金锄头文库上搜索。

1、传播优秀Word版文档 ,希望对您有帮助,可双击去除!设计一个简单的五子棋游戏一、设计目标与内容1. 了解Windows编程的基础知识,掌握MFC应用程序的基本知识;2. 基本掌握面向对象程序设计的基本思路和方法;3. 掌握用VC+开发应用程序的的一般步骤和方法;4. 能够利用所学的基本知识, 设计一个简单的五子棋游戏,具有以下功能:数据结构的设计;五子棋棋盘的绘制。两人下棋时,两人下棋算法的设计。两人下棋时,判断任一方获胜的算法的设计。二、设计要求1. 用VC进行编码,实现应用程序的功能。注重编码质量,代码要有适当的注释;提交设计报告一份(课程设计任务书、目录、主要的数据结构、设计的基本思路

2、、设计的步骤及主要代码、心得体会、参考文献)。总体设计 运行时效果如下: 图3-1 这个程序只能进行两个人之间的对弈,不能进行人机对弈,由于时间和个人能力的原因所以人机对弈的算法就没有写出。同时程序中也存在着很多漏洞,但基本的功能都已经实现,还有待继续改进。 详细设计u 新建工程game_wzq 选择单文档应用程序,在Step 4 of 6中先中Windows Sockets复选框。如下图: 图3-2u 资源编辑 黑白位图Bitmap以表示棋盘上面的棋子: IDB_BLACK DB_WHITE 黑白鼠标Cursor以替换当前鼠标: IDC_CURSOR1 黑棋子 IDC_CURSOR2 白棋子

3、黑白图标Icon以显示在状态栏供以提示 IDI_BLACK IDI_WHITE菜单以供操作:开始: ID_START 保存: ID_SAVE打开: ID_OPEN如下图所示: 图3-3u 变量函数首先,为了实现状态栏的应用,我们必须更改它的变量: 在MainFrm.h文件里面,把CStatusBar m_wndStatusBar 为public 接着是在game_wzqView.h文件里面添加变量函数: /两个鼠标 HCURSOR hcursorwhite;HCURSOR hcursorblack;/棋盘数组 int wzq1919; / colorwhite TRUE时白棋下,否则黑棋下 b

4、ool colorwhite;/棋子位图CBitmap m_bmblack;CBitmap m_bmwhite; /保存文件void Save();/检查是否结束void over(CPoint point);/鼠标操作afx_msg void OnLButtonUp(UINT nFlags, CPoint point);/鼠标图形更换 afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);/菜单的开始afx_msg void OnStart();/菜单的保存 afx_msg void OnSave(); /菜单的打

5、开 afx_msg void OnOpen();u 具体实现1、由于我们的游戏的棋盘大小是一定的,不能改变大小的,是应该符合要求的。在如下函数添加设置窗口大小的语句:BOOL CMainFrame:PreCreateWindow(CREATESTRUCT& cs)if( !CFrameWnd:PreCreateWindow(cs) )return FALSE;/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT cs cs.dwExStyle=cs.dwExStyle|WS_EX_TOPMOS

6、T; cs.style=WS_SYSMENU|WS_OVERLAPPED|WS_MINIMIZEBOX; /设置窗口大小:400*340 cs.cx=450; cs.cy=500; return TRUE;2、初始化变量: 在构造函数里添加初始代码:CGame_wzqView:CGame_wzqView()/Load鼠标图像和棋子位图 hcursorblack=AfxGetApp()-LoadCursor(IDC_CURSOR1); hcursorwhite=AfxGetApp()-LoadCursor(IDC_CURSOR2); m_bmwhite.LoadBitmap(IDB_WHITE)

7、; 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); pDC-MoveTo(40+i*20

8、,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,&Dc,0,0,SRCCOPY);

9、 4、设置鼠标:棋盘画好了,接下来就是下棋了。但鼠标并没有像我们上面说的那样变成白棋,加函数如下:BOOL CGame_wzqView:OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) if(nHitTest=HTCLIENT)/白棋下,显示白棋鼠标if(colorwhite) /调用主框架里面的状态栏CMainFrame *pFrm=(CMainFrame*)AfxGetApp()-m_pMainWnd;CStatusBar*pStatus=&pFrm-m_wndStatusBar; if(pStatus)pStatus-GetStat

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

11、adIcon(IDI_BLACK);/显示文字pStatus-SetPaneText(0,黑棋下);return 1;return CView:OnSetCursor(pWnd, nHitTest, message); 5、下棋操作:这就涉及到OnLButtonDown(UINT nFlags, CPoint point)和OnLButtonUp(UINT nFlags, CPoint point)两个函数了。要用哪一个或用两个?用Down函数时是在鼠标按下时放下棋子,可是,要是我们按下后意识到按错了怎么办;那就改用Up函数,表示当鼠标键松开时放下棋子。OK!添加函数如下:void CGame_wzqView:OnLButtonUp(UINT nFlags, CPoint point) CView:OnLButtonUp(nFlags, point);CDC *pDC=GetDC(); CDC Dc;if(Dc.CreateCompatibleDC(pDC)=FALSE)AfxMessageBox(Cant create DC)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 基础医学

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