c++课程设计报告之五子棋游戏

上传人:飞*** 文档编号:30954875 上传时间:2018-02-03 格式:DOC 页数:13 大小:460.43KB
返回 下载 相关 举报
c++课程设计报告之五子棋游戏_第1页
第1页 / 共13页
c++课程设计报告之五子棋游戏_第2页
第2页 / 共13页
c++课程设计报告之五子棋游戏_第3页
第3页 / 共13页
c++课程设计报告之五子棋游戏_第4页
第4页 / 共13页
c++课程设计报告之五子棋游戏_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《c++课程设计报告之五子棋游戏》由会员分享,可在线阅读,更多相关《c++课程设计报告之五子棋游戏(13页珍藏版)》请在金锄头文库上搜索。

1、#大学C+面向对象课程设计报告此课设源代码工程:http:/ 计算机工程学院 专业: 软件工程 学 生 姓 名 : 班级: 学号: 题目: 五子连珠棋 起迄日期:2011.07.042011.07.14 设计地点: 计算机工程学院机房 指 导 教 师: 完成日期: 2011 年 7 月 14 日一、 课程设计目的。1、 进行 c+面向对象程序设计的复习巩固;2、 在完成 c+面向对象语言学习的基础上,通过自学 MFC,掌握一种可视化编程的方法,并通过实践,加深对面向对象语言的理解。3、 提高运用 c+编程的能力和解决实际问题的能力,创新能力及团队合、协调能力4、 提高调查研究、查询技术文献、资

2、料和编程及设计文档的能力;5、 首次尝试编写软件,学习实际操作开发能力,体验学习基础知识重要性。6、 提高自学能力,体验合作以及独立编程、分析文献等各方面的重要性,加强这些方面素质的训练。二、 课程设计内容与实现的功能一、 设计内容五子棋游戏是一历史悠久,对抗性强,技巧性高的棋类游戏。而且我对五子棋有着独特的爱好,希望自己也可以编写出一款可以实现人机对战的五子棋游戏。把自己的思想付给电脑,让自己有些成就感,给自己继续努力的动力。借此次课程设计的机会,把想法变成现实。而且五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快” ,又有古典哲学的

3、高深学问“阴阳易理” ;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。所以此次 c+课程设计选择五子棋这个题目。二、 程序所实现的功能通过给电脑赋予人工智能,利用电脑运算速度快的特点,结合五子棋的游戏规则,给电脑设定固定的扫描方式,设定权值,使电脑能够选择最合适的落子点,然后调用加载已做好的棋盘棋子图像,最终实现简单的人机对弈。该游戏为普通玩家使用,只要连成五子即获胜,没有禁手、RIF(国际连珠连盟)正式规则、 “Yamaguchi”、

4、”Tarannikov”、 “Taraguchi”等规则。三、 系统分析与设计一、设计内容1 根据所选题目,给出模块图主界面开始游戏 重新开始游戏 游戏结束落子判断输赢结束界面初始化棋盘 初始化棋盘2 画出主程序及其主要模块的流程图游戏开始初始化棋盘点鼠标左键落子加载棋盘图片五子连珠?扫描棋盘,根据预设权值,选择最佳地点落子五子连珠?用红色显示游戏结束加载棋子图片到棋盘加载棋子图片到棋盘是否是1转 1否四、系统测试与调试分析1 实际完成的情况说明能够判断胜负,没下一子,都要进行胜负判断,赋予电脑人工智能,玩家通过点击鼠标左键落子,电脑会根据预设的方式扫描,计算每一点的权值,从而找到最佳落子点,

5、实现人机对弈。2 程序的性能分析。本程序按如下扫描棋盘四个方向(从左到右,从上到下,从左到右斜向下,从右到左斜向下)依次扫描所有可能的赢法;15*15 的棋盘共有 572 中可能的赢法,所有点对这 572 种赢法依次扫描,通过赋权值,找出人与电脑权值最大的点。比较人与电脑的最大权值,以确定最佳落子点。棋盘如下3 上机过程中出现的问题及其解决方案。1) 游戏界面内光标作用域溢出。通过修改程序内控制光标作用域的像素值,使光标作用域与棋盘有格线处吻合。2) 加载的棋子图片与棋盘格线不完全吻合。修改加载棋子图片函数的参数,棋盘边界长的数据要精确。4 程序中可以改进的地方说明。电脑寻找最佳落子点的方法有

6、些简单,使得电脑的人工智能不高。游戏使用一段时间后会发现电脑的漏洞,使得游戏的挑战性降低。游戏界面比较单一,可以多加一些色彩元素。5 程序中可以扩充的功能及设计实现构想。可以再增加保存和读取功能,保存当前游戏的状态,我们为自己的文件定义一个后缀名为: .wzq。wzq;接着是打开保存文件的公共对话框,如果确定,则表示保存,那么就先获取文件名,然后按照一定的顺序保存各个点的数组的值,最后保存当前是哪种颜色下棋。读文件就是把我们以前保存的文件打开,读取当前打开文件的内容,并给数组赋值使和文件内容相同,然后可以继续进行游戏。本程序只实现了人机对弈,可以再增加人人对弈的功能五、用户手册程序的运行环境:

7、visualC+或 visual studio 2008程序执行结果:程序运行后,进入游戏界面,鼠标左键点击 start,如图一所示。确定开始下棋,玩家或电脑获胜后,如图二三所示,重新开始点击 restart,结束游戏点击 Exit。 图一图二6、程序清单 加载位图(棋盘和棋子):m_board-m_hObject = (HBITMAP):LoadImage (NULL,checkerboard.bmp,IMAGE_BITMAP,320,320,LR_LOADFROMFILE);m_white-m_hObject = (HBITMAP):LoadImage (NULL,bai.bmp,IMAG

8、E_BITMAP,20,20,LR_LOADFROMFILE);m_black-m_hObject = (HBITMAP):LoadImage (NULL,hei.bmp,IMAGE_BITMAP,20,20,LR_LOADFROMFILE);m_temp-m_hObject = (HBITMAP):LoadImage (NULL,mask1.bmp,IMAGE_BITMAP,20,20,LR_LOADFROMFILE);m_red-m_hObject=(HBITMAP):LoadImage (NULL,dred.bmp,IMAGE_BITMAP,20,20,LR_LOADFROMFILE);

9、响应左键:LButtonDown(UINT nFlags, CPoint point) int m ,n;CDC thmem1 ;CClientDC dc(this);thmem1.CreateCompatibleDC(int curx = point.y;int cury = point.x;m =int(curx-5)/20);n = int(cury-15)/20);没有五子连珠时简单显示棋子:显示白色棋子: if(boardij=0) thmem2.SelectObject (m_temp);dc.BitBlt(j*20+15,i*20+5,20,20,thmem2.SelectObj

10、ect (m_black);dc.BitBlt (j*20+15,i*20+5,20,20,m_byColour = white ;显示黑色棋子: if(boardij = 1) thmem2.SelectObject (m_temp);dc.BitBlt(j*20+15,i*20+5,20,20,thmem2.SelectObject (m_white);dc.BitBlt (j*20+15,i*20+5,20,20,m_byColour = black;五子连珠时红色显示棋子:人赢时: if(ptableiijjj = true) thmem2.SelectObject(m_temp);d

11、c.BitBlt(jj*20+15,ii*20+5,20,20,thmem2.SelectObject(m_red);dc.BitBlt(jj*20+15,ii*20+5,20,20, / MessageBox(你赢了);计算机赢时: if(ctableiijjj = true) thmem2.SelectObject (m_temp);dc.BitBlt(jj*20+15,ii*20+5,20,20,thmem2.SelectObject (m_red);dc.BitBlt(jj*20+15,ii*20+5,20,20,电脑扫描棋盘: for(i = 0 ; i= 4 ; j-)for( k

12、 = 0 ; k = 4 ; j-) for( k = 0 ; k 5 ;k+) ptablej-ki+kcount = true;ctablej-ki+kcount = true; count +; 七、体会与自我评价课程设计是检验知识能力的一种途径,可以让我们学到许多书本中学不到的知识。使我所学知识融会贯通,能熟练掌握 c+中一些基本知识点,这是一次很好的实践机会,通过动手操作找出不足,不断提高自己。把我所学到的和我所想到的都运用设计一个自己的作品。通过课程设计培养了我的动手能力以及综合运用所学 c+基本理论,基础知识,基本技能,进行程序开发和程序分析,提高在实际开发中解决实际问题的能力,

13、达到了能够利用 c+语言进行程序的规划,分析,设计和实施,更能进一步使我对这门语言有更深刻的理解和更好的得到巩固。更能对我所学的知识得到检验。课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程 ”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础通过这次课程设计,本人在多方面都有所提高。通过这次课程设计,综合运用本专业所学课程的理论和生产实际知识进行一次五子棋程序设计工作的实际训练从而培养和提高学生独立工作能力,巩固与扩充了 C+等

14、课程所学的内容,掌握五子棋程序设计的方法和步骤,提高了计算能力、建模能力,熟悉了规范和标准,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。在此感谢我们的熊晓芸老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次 C+课程设计的每个实验细节和每个数据,都离不开老师您的细心指导。而您开朗的个性和宽容的态度,帮助我能够很顺利的完成了这次课程设计。同时感谢

15、对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。由于本人的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指教,我十分乐意接受你们的批评与指正,本人将万分感谢八、参考文献1郑莉C+语言程序设计(第 3 版) 北京:清华大学出版社,2005.72钱能C+程序设计教程(第 2 版) 北京:清华大学出版社,2005.83. 黄维通. Visual C+面向对象与可视化程序设计 (第 2 版).北京:清华大学出版社,2003.124. 刘路放. Visual C+与面向对象程序设计教程(第二版). 北京:高等教育出版社,2007.85. 潘爱民. COM 原理与应用.北京:清华大学出版社,1999.11九、课程设计评价课程设计评价成绩:

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

当前位置:首页 > 行业资料 > 其它行业文档

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