




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
i 目录 第一章第一章 需求分析需求分析1 1 1.1 总体分析 1 1.2 初始化 1 1.3 主循环控制模块 1 1.4 玩家下子 1 1.5 盘面分析填写棋型表 2 1.6 对方下子 2 1.7 胜负判断 2 第二章第二章 功能描述功能描述3 3 2.1 功能模块图 3 2.2 功能说明 3 第三章第三章 系统设计系统设计4 4 3.1 流程图 4 3.2 流程图说明 5 第四章第四章 运行结果运行结果6 6 第五章第五章 总结总结8 8 第六章第六章 致谢致谢9 9 附录一附录一 参考文献参考文献1010 附录二附录二 源代码源代码1111 课程设计综合课程设计 1 五子棋游戏 第一章 需求分析 1.1 总体分析 软件需求分析是软件开发周期的第一个阶段,也是关系到软件开发成败的关键 一步。对于任何一个软件而言,需求分析工作都是至关重要的一步。只有通过软件 需求分析,才能把软件的功能和性能由总体的概念性描述转化为具体的规格说明, 进而建立软件开发的基础。实践表明,需求分析工作进行得好坏,在很大程度上决 定了软件开发的成败。 软件需求分析的任务是:让用户和开发者共同明确将要开发的是一个什么样的 软件。具体而言,就是通过对问题及其环境的理解、分析和综合,建立逻辑模型, 完成新软件的逻辑方案设计。 基于本游戏,首先得为整个棋盘建立一张表格用以记录棋子信息,我们使用一 个 15*15 的二维数组 table1515(15*15 是五子棋棋盘的大小),数组的每一个元 素对应棋盘上的一个交叉点,用0表示空位、 1代表己方的子、 2代表对方 的子;这张表也是今后分析的基础。在此之后还要为两个玩家双方各建立一张棋型 表 computer15154和 player15154,用来存放棋型数据。 1.2 初始化 首先,建立盘面数组 table1515、对战双方的棋型表 computer15154 和 player15154并将它们清零以备使用;然后初始化显示器、键盘、鼠等输 入输出设备并在屏幕上画出棋盘(棋盘可以不显示) 。 1.3 主循环控制模块 控制下棋顺序,当轮到某方下子时,负责将程序转到相应的模块中去,主要担 当一个调度者的角色。 1.4 玩家下子 当轮到玩家下时,您通过键盘或鼠标在棋盘上落子,程序会根据该点的位置, 在 table1515数组的相应地方记录2 ,以表明该子是玩家下的。 课程设计综合课程设计 2 1.5 盘面分析填写棋型表 您在下五子棋时,一定会先根据棋盘上的情况,找出当前最重要的一些点位, 如“活三” 、 “冲四”等;然后再在其中选择落子点。先来分析己方的棋型,我们从 棋盘左上角出发,向右逐行搜索,当遇到一个空白点时,以它为中心向左挨个查找, 如果遇到己方的子则记录然后继续,如果遇到对方的子、空白点或边界就停止查找。 左边完成后再向右进行同样的操作;最后把左右两边的记录合并起来,得到的数据 就是该点横向上的棋型,然后把棋型的编号填入到 computerxyn中就行了 (x、y 代表坐标,n=0、1、2、3 分别代表横、竖、左斜、右斜四个方向) 。而其他 三个方向的棋型也可用同样的方法得到,当搜索完整张棋盘后,己方棋型表也就填 写完毕了。然后再用同样的方法填写对方棋型表。 注意:所有棋型的编号都要事先 定义好,越重要的号数越大! 1.6 对方下子 有了上面填写的两张棋型表,就是遍历棋型表 computer15154和 player15154找出其中数值最大的一点,在该点下子即可。但这种算法的弱点 非常明显,只顾眼前利益,不能顾全大局,这就和许多五子棋初学者一样犯了“目 光短浅”的毛病。 如果在这儿下子将会形成对手不得不防守的棋型(例如:冲 四 、 活三 ) ;那么下一步对手就会照您的思路下子来防守您,如此一来便完成了 第一步的预测。这时再调用模块 4 对预测后的棋进行盘面分析,如果出现了四三 、 双三或双四等制胜点,那么己方就可以获胜了(当然对黑棋而言双三 、 双四是禁手,另当别论) ;否则照同样的方法向下分析,就可预测出第二步、第 三步 等一等,要是盘面上没有对手必须防的棋型,哪该怎么办呢?进攻不成的话就 得考虑防守了,将自己和对手调换一下位置,然后用上面的方法来预测对手的棋, 这样既可以防住对手巧妙的攻击,又能待机发动反击,何乐而不为呢! 1.7 胜负判断 务须多言,某方形成五子连即获胜;若黑棋走出双三 、 双四或长连即以 禁手判负。 课程设计综合课程设计 3 第二章 功能描述 2.1 功能模块图 五五子子棋棋游游戏戏 判判断断 棋棋盘盘 是是否否 已已满满 判判断断 是是否否 出出错错 并并提提 示示 判判断断 那那方方 获获胜胜 交交替替 循循环环 双双方方 下下棋棋 图 2.1 功能模块图 2.2 功能说明 该五子棋程序基本上实现了五子棋的游戏功能,有双方下棋的界面及最终判定 结果的界面。同时该游戏采用二维坐标实现,明了易懂,方便玩家在游戏过程中的 基本操作,使游戏更加简便。在细节方面,该系统提供实时存储功能,随时记录为 完成的游戏,使用户可以很好的处理意外中断的情况。该游戏基本实现了游戏的一 些要求和特征。在游戏的源程序及文档方面,我们也严格遵守软件工程思想,立足 实验要求,确定任务,需求分析,设计和编码,每个步骤力求清晰易懂。原代码注 释详尽,各功能模块功能分明,可移植性强。当然该系统也有很多不足的地方,第 一次进行独立的课程设计,也有很多细节方面是考虑到的,这款游戏也是在不断的 调试和修改中产生和完善的。希望老师能够指出不足,帮助我不断提高。 课程设计综合课程设计 4 第三章 系统设计 3.1 流程图 开开始始 棋棋盘盘已已满满 否否 “0”方方选选位位置置 判判断断该该位位置置是是否否有有棋棋 “0”方方落落子子 判判断断“0”方方是是否否获获 胜胜 棋棋盘盘已已满满 “x”方方选选位位置置 判判断断该该位位置置是是否否有有棋棋 “x”方方落落子子 判判断断“x”方方是是否否获获 胜胜 输输出出平平局局 另另找找位位置置 输输出出“0” 方方获获胜胜 输输出出平平局局 另另找找位位置置 结结束束 无无 否否 否否 无无 否否 是是 有有 是是 是是 有有 是是 输输出出 “x”方方 获获胜胜 课程设计综合课程设计 5 图 3.1 流程图 3.2 流程图说明 本程序定义了各种操作函数、各种状态判定宏,思想明确,思路清晰。各个判 断选择了不同路径,因此继续进行或输出结果。程序中, “循环”的利用非常直接和 清晰,双方交替下棋,因此循环往复。最终决出胜负或最终平局。分析时,也考虑 了许多种情况,针对各个情况均作出了相对措施和解决方案。 程序采用循环进行双方交替下棋,并进行了很多判断。首先判断棋盘是否已满, 若棋盘已满,则输出平局,结束游戏;若棋盘未满,则继续进行。然后判断“0”方 是否胜出,若“0”方获胜,则输出“0”方获胜,结束游戏;若“0”方没有获胜, 则继续进行。再判断“x”方是否获胜,若“x”方获胜,则输出“x”方获胜,结束 游戏;若“x”方没有获胜,则继续进行。回到“首先”的判断。如此循环 课程设计综合课程设计 6 第四章 运行结果 图 4.1 运行结果初始图 图 4.2 游戏过程图 课程设计综合课程设计 7 图 4.3 游戏进行图 图 4.4 “0”方获胜图 课程设计综合课程设计 8 第五章 总结 第六章 致谢 附录一 参考文献 1严蔚敏,吴伟民.数据结构.北京:清华大学出版社,2010 年 2苏仕华,魏韦巍,王敬生,刘燕君.数据结构课程设计(第二版).北京:机械工业出 版社,2010 年 课程设计综合课程设计 9 3谭浩强.c 程序设计(第二版).北京:清华大学出版社,1999 年 4谭浩强.c+程序设计.北京:清华大学出版社,2009 年 附录二 源代码 #include using namespace std; int hsheng(char a15); /判断 o 子是否获胜的函数 int bsheng(char a15); 课程设计综合课程设计 10 /判断 x 子是否获胜的函数 int he(char a15); /判断是否平局(也就是棋盘下满了)的函数 void qipan(char a1515) /执行输出棋盘命令 coutxy; if(axy=o|axy=x) /判断是否已有子 cout=15|y=15) coutxy; if(axy=o|axy=x|x=15|y=15) for( ; axy=o|axy=x; ) coutxy;continue; for ( ; x=15|y=15|x; ) coutxy;continue ; axy=x;break; else axy=x; break; qipan(a); /再一次输出棋盘 if(bsheng(a) /判断 x 子是否已经获胜 cout3;j-) if(aij=h return 0; int bsheng(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三年级下册第一单元3 荷花教案
- 人教版九年级上册第四单元《课题3 水的组成》教学设计
- 非计划再次手术知识培训
- 工业固体废物规范处理培训
- 合规考试信贷练习试题及答案
- 2024-2025学年七年级下学期道德与法治期中模拟试卷(二)(统编版2024新教材含答案解析)
- 2025年苏教版小学数学小升初模拟考试测试卷及答案(共五套)
- 【八下RJ数学】安徽省合肥市庐江县汤池镇初级中学2023-2024学年八年级数学下学期期中模拟测试卷
- 采购合同诉讼重点基础知识点
- 大气环境生态规划重点基础知识点
- 2025届江苏省南通市如皋市高三下学期适应性考试(二)物理考试(含答案)
- 人力资源管理行业的未来发展趋势
- 2025年开封大学高职单招(数学)历年真题考点含答案解析
- 【9化一模】2025年安徽省合肥市蜀山区九年级中考一模化学试卷(含答案)
- 炎症性肠病(IBD)概述
- 护理质量与安全分析汇报
- 2025-2030轨道车涂料行业市场现状供需分析及投资评估规划分析研究报告
- 无线电基础知识培训课件
- 4.1 基因指导蛋白质的合成(课件)高一下学期生物人教版(2019)必修2
- 出租车司机岗前教育培训
- 广东省梅州市五华县2023-2024学年二年级下学期数学期中试卷(含答案)
评论
0/150
提交评论