軟件综合实习报告-五子棋游戏的实现.docx

軟件综合实习报告-五子棋游戏的实现.docx

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
軟件综合实习报告-五子棋游戏的实现

软件综合实习报告题目:五子棋人机博弈游戏院(系): 计算机学院 专 业: 计算机科学与技术 姓 名: 杨祺鹏 班级学号: 191072-03 20071000566 指导教师: 王改芳 2010 年 9 月 18 日目录系统需求分析与总体设计需求分析问题描述数据流程图总体设计开发背景开发语言开发平台和运行平台总体功能设计详细设计与系统实现类和类的方法设计类的设计类的方法设计算法描述系统测试功能测试性能测试总结系统仍存在的不足结论和体会系统需求分析与总体设计需求分析问题描述题目:五子棋人机博弈游戏题目要求:实现五子棋游戏的人机博弈。要求:友好的人机图形化界面、方便的操作方式;自动判断输、赢或平;可选择黑白;可悔棋;可以基于人工智能方面的知识进行设计,如:启发式搜索、搜索函数的设置、α_β算法、知识的表示及知识库,推理机等。五子棋简介:五子棋是起源于中国古代的传统黑白棋种之一。顾名思义,只要连成五子即可获得胜利。听上去好像很简单,但是不用技巧好似很难获胜的,这其中就有“活三”,“冲三”等等专业名词,这些我会在后续的程序中进行介绍。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见。 通过问题的描述,初步分析可得出此软件应具有以下的功能:友好的界面,方面的操作方式——》可以快速开始游戏,功能明确而且界面明朗自动判断输赢——》计算机可以根据棋子的状态判断胜负情况可选择黑白——》可以先手下棋和后手下棋可悔棋——》具有悔棋功能计算机AI——》计算机需要具有一定的AI,需要AI攻守兼备数据流程图数据流动很少,主要是在算法内部进行计算,实际进行交互的数据是没有的。 要求开始游戏 落子,33禁手 棋子坐标 玩家落子 取最佳位置并落子(若不分胜负) 再来一盘 胜负已分总体设计开发背景软件工程综合实习,因为我对算法很有兴趣,就决定通过这个程序学习一下。语言选择使用C#平台在设计人机界面时更人性化,画图工具也更为简洁易用。开发环境及运行环境开发环境:操作系统名称Microsoft Windows 7 旗舰版版本6.1.7600 版本 7600处理器AMD Turion(tm) X2 Dual-Core Mobile RM-72,2100 Mhz, 物理内存(RAM)3.00 GB开发平台:Microsoft Visual Studio 2008 专业版 - 简体中文 Microsoft Visual C# 2008运行平台:Intel? Pentium? 2及以上处理器,32M以上内存,4G以上硬盘Microsoft? Windows? 9X/NT操作系统800*600或以上的屏幕分辨率Net.framework2.0及以上版本具体功能设计主要函数:画棋子画棋盘先手判断胜负判断计算机AI算法(权值赋值,权值计算,找最大权值)界面设计:快速开始游戏先手选择悔棋,认输,电脑提示棋子的坐标显示(计算电脑提示的附加功能)帮助这几个模块的重点是计算机AI算法的设计。在参阅了很多资料以后,我发现解决五子棋问题的算法非常之多,遗传算法,α—β剪枝算法等等,这些算法的特点是对后续步骤进行无数次的推演并一一评分,最后去评分最高的一种方案的第一步,在下完一子之后再进行算法计算,虽然AI非常聪明但是计算繁琐且计算时间其长无比。在网上发现的算法有更多的程序员是采用了权值计算的方法,具体来说就是根据每种情况每种可能对每个点都赋不同的权值,AI在判断应该进攻还是应该防守就是依靠权值的大小,权值最大的位置放棋子,采用这种方法虽然笨是笨了些,但是计算速度快,尤其是在棋盘比较小的时候(15*15棋盘),而且在对比中发现这种AI也很聪明。在速度和计算精度之间权衡之后,我准备选择计算权值的方法来做,如果时间仍有富裕的话再使用别的算法来计算并进行对比。详细设计与系统实现类和类的方法设计类的设计(后面的方法设计也遵从这个顺序逐个进行详细注释)棋盘类Chessboard棋盘类主要实现对棋盘棋子,以及电脑和人下棋的显示,对虚拟棋盘的定义,对下棋路径的堆栈的初始化,对棋局的初始化。棋子类 Stone棋子类主要实现对棋子的画图操作。计算机类Computer计算机类是本程序的核心模块,主要实现计算机对每个棋子每个位置的权值赋值,对每个棋盘位置的权值计算,求最大权值。规则类Rule规则类主要实现对胜负平局的判断,对黑棋禁手的判断,对每个方向上的连子数的计算,对棋局判断是依据连子数计算的。主函数类frmMain主函数主要是对界面上每个按键的功能进行实现,另实现对鼠标的move和click事件的定义,获取鼠标的坐标。类的方法的具体实现Chessboard类中方法

文档评论(0)

yxnz + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档