版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#大学C+面向对象课程设计报告此课设源代码工程:院(系): 计算机工程学院 专业: 软件工程 学生姓名: 班级: 学号: 题目: 五子连珠棋 起迄日期:2011.07.042011.07.14 设计地点: 计算机工程学院机房 指 导 教 师: 完成日期: 2011 年 7 月14 日一、 课程设计目的。1、 进行c+面向对象程序设计的复习巩固;2、 在完成c+面向对象语言学习的基础上,通过自学MFC,掌握一种可视化编程的方法,并通过实践,加深对面向对象语言的理解。3、 提高运用c+编程的能力和解决实际问题的能力,创新能力及团队合、协调能力4、 提高调查研究、查询技术文献、资料和编程及设计文档的
2、能力;5、 首次尝试编写软件,学习实际操作开发能力,体验学习基础知识重要性。6、 提高自学能力,体验合作以及独立编程、分析文献等各方面的重要性,加强这些方面素质的训练。二、 课程设计内容与实现的功能一、 设计内容 五子棋游戏是一历史悠久,对抗性强,技巧性高的棋类游戏。而且我对五子棋有着独特的爱好,希望自己也可以编写出一款可以实现人机对战的五子棋游戏。把自己的思想付给电脑,让自己有些成就感,给自己继续努力的动力。借此次课程设计的机会,把想法变成现实。而且五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”
3、;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。所以此次c+课程设计选择五子棋这个题目。二、 程序所实现的功能 通过给电脑赋予人工智能,利用电脑运算速度快的特点,结合五子棋的游戏规则,给电脑设定固定的扫描方式,设定权值,使电脑能够选择最合适的落子点,然后调用加载已做好的棋盘棋子图像,最终实现简单的人机对弈。 该游戏为普通玩家使用,只要连成五子即获胜,没有禁手、RIF(国际连珠连盟)正式规则、“Yamaguchi”、”Tarannikov”
4、、“Taraguchi”等规则。三、 系统分析与设计一、 设计内容1 根据所选题目,给出模块图主界面开始游戏重新开始游戏游戏结束落子判断输赢结束界面初始化棋盘初始化棋盘2 画出主程序及其主要模块的流程图游戏开始初始化棋盘点鼠标左键落子加载棋盘图片五子连珠?扫描棋盘,根据预设权值,选择最佳地点落子五子连珠?用红色显示游戏结束加载棋子图片到棋盘加载棋子图片到棋盘是否是1转1否四、系统测试与调试分析1 实际完成的情况说明能够判断胜负,没下一子,都要进行胜负判断, 赋予电脑人工智能,玩家通过点击鼠标左键落子,电脑会根据预设的方式扫描,计算每一点的权值,从而找到最佳落子点,实现人机对弈。 2 程序的性能
5、分析。本程序按如下扫描棋盘四个方向(从左到右,从上到下,从左到右斜向下,从右到左斜向下)依次扫描所有可能的赢法;15*15的棋盘共有572中可能的赢法,所有点对这572种赢法依次扫描,通过赋权值,找出人与电脑权值最大的点。比较人与电脑的最大权值,以确定最佳落子点。棋盘如下3 上机过程中出现的问题及其解决方案。1) 游戏界面内光标作用域溢出。通过修改程序内控制光标作用域的像素值,使光标作用域与棋盘有格线处吻合。2) 加载的棋子图片与棋盘格线不完全吻合。修改加载棋子图片函数的参数,棋盘边界长的数据要精确。4 程序中可以改进的地方说明。电脑寻找最佳落子点的方法有些简单,使得电脑的人工智能不高。游戏使
6、用一段时间后会发现电脑的漏洞,使得游戏的挑战性降低。游戏界面比较单一,可以多加一些色彩元素。5 程序中可以扩充的功能及设计实现构想。可以再增加保存和读取功能,保存当前游戏的状态,我们为自己的文件定义一个后缀名为: .wzq。wzq;接着是打开保存文件的公共对话框,如果确定,则表示保存,那么就先获取文件名,然后按照一定的顺序保存各个点的数组的值,最后保存当前是哪种颜色下棋。读文件就是把我们以前保存的文件打开,读取当前打开文件的内容,并给数组赋值使和文件内容相同,然后可以继续进行游戏。本程序只实现了人机对弈,可以再增加人人对弈的功能五、用户手册程序的运行环境:visualC+或visual stu
7、dio 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
8、",IMAGE_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 (
9、NULL,"dred.bmp",IMAGE_BITMAP,20,20,LR_LOADFROMFILE);响应左键:LButtonDown(UINT nFlags, CPoint point) int m ,n; CDC thmem1 ; CClientDC dc(this); thmem1.CreateCompatibleDC(&dc); int curx = point.y; int cury = point.x; m =int(curx-5)/20);n = int(cury-15)/20);没有五子连珠时简单显示棋子:显示白色棋子: if(boardij=0)
10、 thmem2.SelectObject (m_temp); dc.BitBlt(j*20+15,i*20+5,20,20,&thmem2,0,0,MERGEPAINT); thmem2.SelectObject (m_black); dc.BitBlt (j*20+15,i*20+5,20,20,&thmem2,0,0,SRCAND); m_byColour = white ;显示黑色棋子: if(boardij = 1) thmem2.SelectObject (m_temp); dc.BitBlt(j*20+15,i*20+5,20,20,&thmem2,0,0,
11、MERGEPAINT);thmem2.SelectObject (m_white);dc.BitBlt (j*20+15,i*20+5,20,20,&thmem2,0,0,SRCAND);m_byColour = black;五子连珠时红色显示棋子: 人赢时: if(ptableiijjj = true) thmem2.SelectObject(m_temp); dc.BitBlt(jj*20+15,ii*20+5,20,20,&thmem2,0,0,MERGEPAINT); thmem2.SelectObject(m_red); dc.BitBlt(jj*20+15,ii*2
12、0+5,20,20,&thmem2,0,0,SRCAND); /MessageBox("你赢了"); 计算机赢时: if(ctableiijjj = true) thmem2.SelectObject (m_temp); dc.BitBlt(jj*20+15,ii*20+5,20,20,&thmem2,0,0,MERGEPAINT); thmem2.SelectObject (m_red); dc.BitBlt(jj*20+15,ii*20+5,20,20,&thmem2,0,0,SRCAND);电脑扫描棋盘:for(i = 0 ; i<15;
13、 i+) for(j= 0 ;j <15 ;j+) boardij = 2; / 初始化棋盘数组 for(i = 0 ; i <15 ; i+) /对列进行隔行扫描, for(j=0 ; j <11 ; j+) for( k = 0 ; k <5 ;k+) ptablej+kicount = true; ctablej+kicount = true; count +; for(i = 0 ; i <15 ; i+) /对行进行隔行扫描 for(j=0 ; j <11 ; j+) for( k = 0 ; k <5 ;k+) ptableij+kcoun
14、t = true; ctableij+kcount = true; count +; for(i = 0 ; i <11; i+) /对交叉的情况东南西北走向进行扫描 for(j=0 ; j <11 ; j+) for( k = 0 ; k <5 ;k+) ptablej+ki+kcount = true; ctablej+ki+kcount = true; count +; for(i = 0 ; i <11 ; i+) /对交叉的情况东北西南走向进行扫描 for(j=14 ; j >= 4 ; j-) for( k = 0 ; k <5 ;k+) pta
15、blej-ki+kcount = true; ctablej-ki+kcount = true; count +; Start:void CMyDlg:Onstart() MessageBox("请落子");m_byColour = black;Restart:再次初始化棋盘,函数类似于扫描 for(i = 0 ; i<15; i+) for(j= 0 ;j <15 ;j+) boardij = 2; for(i = 0 ; i <15 ; i+) for(j=0 ; j <11 ; j+) for( k = 0 ; k <5 ;k+) pta
16、blej+kicount = true; ctablej+kicount = true; count +; for(i = 0 ; i <15 ; i+) for(j=0 ; j <11 ; j+) for( k = 0 ; k <5 ;k+) ptableij+kcount = true; ctableij+kcount = true; count +; for(i = 0 ; i <11; i+) for(j=0 ; j <11 ; j+) for( k = 0 ; k <5 ;k+) ptablej+ki+kcount = true; ctablej+
17、ki+kcount = true; count +; for(i = 0 ; i <11 ; i+) for(j=14 ; j >= 4 ; j-) for( k = 0 ; k <5 ;k+) ptablej-ki+kcount = true; ctablej-ki+kcount = true; count +; 七、体会与自我评价 课程设计是检验知识能力的一种途径,可以让我们学到许多书本中学不到的知识。使我所学知识融会贯通,能熟练掌握c+中一些基本知识点,这是一次很好的实践机会,通过动手操作找出不足,不断提高自己。把我所学到的和我所想到的都运用设计一个自己的作品。通过课程
18、设计培养了我的动手能力以及综合运用所学c+基本理论,基础知识,基本技能,进行程序开发和程序分析,提高在实际开发中解决实际问题的能力,达到了能够利用c+语言进行程序的规划,分析,设计和实施,更能进一步使我对这门语言有更深刻的理解和更好的得到巩固。更能对我所学的知识得到检验。课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础通过这次课程设计,本人在多方面都有所提高。通过这次课程设计,综合运用本专业所学课程的理论和生产实际知识进行一次五子棋程序设计工作的实际训练从而培养和提高学生独立工作能力,巩固与扩充了C+等课程所学的内容,掌握五子棋程序设计的方法和步骤
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026大二政治概论考试题型及答案
- 辽水集团招聘笔试题库
- 学前儿童发展心理学 第5版 课件 第2章 学前儿童心理研究的理论流派
- 事业单位山东省事业单位社会保障服务中心笔试全真模拟试卷附参考答案
- 袋鼠相关试题及答案解析
- 吉林省长春吉大附中力旺实验中学2027届数学七上期末达标检测模拟试题含解析
- 幼小衔接家长课:亲子共读
- 四年级分水岭:班主任写给家长的话
- 2027届浙江省温州市龙港地区七年级数学第一学期期末教学质量检测试题含解析
- 2026年工程硕士(GCT)逻辑模拟题及答案详解
- 新一代大学英语(第二版)综合教程1(智慧版) 课件 B1U1 iPrepare
- 2025至2030中国碲化镉(CdTe)行业发展趋势分析与未来投资战略咨询研究报告
- 武汉大学经济与管理学院保研细则
- 煤矿监测监控报警类型及应急处置方法
- 教育部《中小学德育工作指南》-德育工作指南
- 询问笔录完整版本
- 新员工入职安全培训试题及答案1套
- 居间服务费居间合同协议书
- 丽水市中医药大健康产业发展三年行动方案
- 12D401-3 爆炸危险环境电气线路和电气设备安装
- 《燃煤机组烟气余热梯级利用系统能效分析导则》
评论
0/150
提交评论