伍振海2015-1-5 16.45.0_第1页
伍振海2015-1-5 16.45.0_第2页
伍振海2015-1-5 16.45.0_第3页
伍振海2015-1-5 16.45.0_第4页
伍振海2015-1-5 16.45.0_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、湖南工业大学课程设计任务书2014 2015学年第 1 学期 计算机与通信 学院(系、部) 计算机科学与技术 专业 1303 班级课程名称: 面向对象程序设计 设计题目: 五子棋双人对抗游戏 完成期限:自 2015 年 1 月 5 日至 2015 年 1 月 12 日共 1 周内容及任务一、设计的主要技术参数二、设计任务三、设计工作量进度安排起止日期工作内容1.71.8查找资料,进行需求分析和概要设计1.91.10各个模块的详细设计1.11软件的实现和调试1.12写课程设计报告并提交源程序主要参考资料1 四维科技,丁展,汤倩.Visual C+ 游戏开发技术与实例M.北京:人民邮电出版社,20

2、052求是科技,张宏林.Visual C+ 6.0程序设计与开发技术大全M. 北京:人民邮电出版社,20053汪翔,袁辉.Visual C+ 实践与提高(网络编程篇)M. 北京:中国铁道出版社,20014黄维通.Visual C+ 面向对象与可视化程序设计M. 北京:清华大学出版社,2003指导教师(签字): 年 月 日系(教研室)主任(签字): 年 月 日 面向对象程序设计课程设计 设计说明书五子棋双人对抗游戏起止日期: 2015 年 1 月 5 日 至 2015 年 1 月 12 日学生姓名伍振海班级1303学绩指导教师(签字)计算机与通信学院2015年 1 月

3、7 日课题名称一、课题的介绍和课题的任务五子棋双人对抗游戏,顾名思义,就是实现双人之间按照五子棋的游戏规则进行对抗从而分出胜负的一个游戏。实现本课题需要解决以下的三个问题:1,判断是否能放下棋子(是否已经有了棋子);2,判断是哪种颜色下棋;3,判断是否已经结束(是谁赢?)。 这些问题,我们将用相应的函数来实现。另外,我们还需应用其它一些功能的实现。如鼠标的更换,工具栏和状态栏的编辑,类与类之间的相互调用等等。我们这个小团队决定进行分工合作,各自负责各自的模块设计和编写,之后再通过整合从而实现本课题的任务。二、设计的要求本课题设计需要利用vc+6.0的MFC功能实现五子棋双人之间的对抗

4、,通过设计、编制、调试一个五子棋的程序,加深对语法及语义分析原理的理解,并实现对命令语句的灵活应用。三、系统的分析和系统中类的设计由于多个函数均需要访问某些数据,这些数据常被设计为全局变量。首先,为了实现状态栏的应用,我们必须更改它的变量:在MainFrm.h文件里面,把StatusBar m_wndStatusBar 为public接着是在game_wzqView.h文件里面添加变量函数:/两个鼠标HCURSOR hcursorwhite;HCURSOR hcursorblack;/棋盘数组int wzq1919;/colorwhite TRUE时白棋下,否则黑棋下bool colorwhi

5、te; /棋子位图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(); /菜单的打开afx_msg

6、 void OnOpen();四、系统的实现及调试由于团队进行了分工合作,所以我负责的是设置鼠标模块以及(1)设置鼠标: 棋盘画好了,接下来就是下棋了。但鼠标并没有像我们上面说的那样变成白棋,加函数如下: BOOL CMy3_1View:OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) / TODO: Add your message handler code here and/or call defaultif(nHitTest=HTCLIENT)/白棋下,显示白棋鼠标if(colorwhite) /调用主框架里面的

7、状态栏CMainFrame*pFrm=(CMainFrame*)AfxGetApp()->m_pMainWnd;CStatusBar*pStatus=&pFrm->m_wndStatusBar;if(pStatus)pStatus->GetStatusBarCtrl().SetIcon(0,AfxGetApp()->LoadIcon(IDI_WHITE);pStatus->SetPaneText(0,"白棋下");SetCursor(hcursorwhite);/显示黑棋鼠标elseSetCursor(hcursorblack);CMa

8、inFrame*pFrm=(CMainFrame*)AfxGetApp()->m_pMainWnd;CStatusBar*pStatus=&pFrm->m_wndStatusBar;if(pStatus)/显示图像pStatus->GetStatusBarCtrl().SetIcon(0,AfxGetApp()->LoadIcon(IDI_BLACK);/显示文字pStatus->SetPaneText(0,"黑棋下");return 1;return CView:OnSetCursor(pWnd, nHitTest, message)

9、;  图1 图2图1和图2分别表示在白棋下和黑棋下时不同的状态,鼠标悬浮时的状态也已成功实现。 (2)下棋操作:这里涉及到OnLButtonDown(UINT nFlags, CPoint point)和OnLButtonUp(UINT nFlags, CPoint point)两个函数。用Down函数时是在鼠标按下时放下棋子,但是,在我们按下后意识到按错了之后发现Down函数不适用,所以决定改用Up函数,表示当鼠标键松开时放下棋子。添加函数如下: void CMy3_1View:OnLButtonUp(UINT nFlags, CPoint point) / TODO:

10、Add your message handler code here and/or call defaultCDC *pDC=GetDC();CDC Dc;if(Dc.CreateCompatibleDC(pDC)=FALSE) AfxMessageBox("Can't create DC"); /是否在棋盘内 if(point.x>30&&point.x<410&&point.y>30&&point.y<410)int px=(point.x-30)/20;int py=(point.y-30

11、)/20;/是否已经有棋子if(colorwhite&&wzqpxpy=0)Dc.SelectObject(m_bmwhite);pDC->BitBlt(px*20+32,py*20+32,160,160,&Dc,0,0,SRCCOPY);/表示存在白棋wzqpxpy=1;/检查是否结束over(point);/换黑棋下colorwhite=false;else if(wzqpxpy=0)Dc.SelectObject(m_bmblack); pDC->BitBlt(px*20+32,py*20+32,160,160,&Dc,0,0,SRCCOPY)

12、;wzqpxpy=-1;over(point);colorwhite=true;CView:OnLButtonUp(nFlags, point); 由上面可以看出,当鼠标键松开时判断,如果那个位置没有棋子,则放下,并把棋盘数组赋相应的值:1 或-1。 四、系统的数据设计 五、系统的实现及调试 系统的实现: 大致流程为: 1.画棋盘; 2.画棋子; 3.增加下棋制约条件; 4.每下一步,判断输赢; 其中第一步为:首先在“3_1.h”头文件中定义一个用于显示棋盘的自定义公有函数,然后再“3_1View.cpp”源文件中实现该函数。 第二步为: 通过MFC的功能进行资源编辑,编辑出黑白棋子

13、的效果。 第三步为:增加下棋制约条件。 第四步为:每次双方下一棋都判断是否有五棋同色。遇到的问题: (1)下棋的制约条件是什么,以及如何用代码实现。 (2)判断输赢有几种方式,以及如何用代码实现。如何解决: 经过在网上的咨询以及资料的参考,渐渐地调试解决了这两个问题。 六、系统的使用说明 图3 图3为五子棋双人对抗的开始界面,左下角有游戏提示,根据提示可以判定游戏开始时是黑色棋子先下还是白色棋子先下。例如,本张图片显示这局游戏先由白色棋子开始下第一步。 游戏界面中的按钮 可以重置游戏。 图4 图4界面显示的是通过系统判定,白色棋子率先获得了胜利。获得胜利时,会经由系统判定后给出一个消息对话框。/说明:主要介绍系统的界面和使用方法及注意事项等。 图5图5则表示黑色棋子在这次对抗中获得了胜利。注意事项: 第一次运行时均为白棋开始下第一步,为系统默认。 开始游戏有两种方式,一种是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论