欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    五子棋游戏课程设计报告含源代码可以运行.docx

    • 资源ID:3858155       资源大小:135.31KB        全文页数:14页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    五子棋游戏课程设计报告含源代码可以运行.docx

    1、五子棋游戏课程设计报告含源代码可以运行 第一章 需求分析 11.1 总体分析 11.2 初始化 11.3 主循环控制模块 11.4 玩家下子 11.5 盘面分析填写棋型表 21.6 对方下子 21.7 胜负判断 2第二章 功能描述 32.1 功能模块图 32.2 功能说明 3第三章 系统设计 43.1 流程图 43.2 流程图说明 5第四章 运行结果 6第五章 总结 8第六章 致 9附录一 参考文献 10附录二 源代码 11五子棋游戏第一章 需求分析1.1 总体分析软件需求分析是软件开发周期的第一个阶段,也是关系到软件开发成败的关键一步。对于任何一个软件而言,需求分析工作都是至关重要的一步。只

    2、有通过软件需求分析,才能把软件的功能和性能由总体的概念性描述转化为具体的规格说明,进而建立软件开发的基础。实践表明,需求分析工作进行得好坏,在很大程度上决定了软件开发的成败。软件需求分析的任务是:让用户和开发者共同明确将要开发的是一个什么样的软件。具体而言,就是通过对问题及其环境的理解、分析和综合,建立逻辑模型,完成新软件的逻辑方案设计。基于本游戏,首先得为整个棋盘建立一表格用以记录棋子信息,我们使用一个15*15的二维数组Table1515(15*15是五子棋棋盘的大小),数组的每一个元素对应棋盘上的一个交叉点,用0表示空位、1代表己方的子、2代表对方的子;这表也是今后分析的基础。在此之后还

    3、要为两个玩家双方各建立一棋型表Computer15154和Player15154,用来存放棋型数据。1.2 初始化首先,建立盘面数组Table1515、对战双方的棋型表Computer15154和Player15154并将它们清零以备使用;然后初始化显示器、键盘、鼠等输入输出设备并在屏幕上画出棋盘(棋盘可以不显示)。 1.3 主循环控制模块控制下棋顺序,当轮到某方下子时,负责将程序转到相应的模块中去,主要担当一个调度者的角色。1.4 玩家下子当轮到玩家下时,您通过键盘或鼠标在棋盘上落子,程序会根据该点的位置,在Table1515数组的相应地方记录2,以表明该子是玩家下的。1.5 盘面分析填写棋

    4、型表您在下五子棋时,一定会先根据棋盘上的情况,找出当前最重要的一些点位,如“活三”、“冲四”等;然后再在其中选择落子点。先来分析己方的棋型,我们从棋盘左上角出发,向右逐行搜索,当遇到一个空白点时,以它为中心向左挨个查找,如果遇到己方的子则记录然后继续,如果遇到对方的子、空白点或边界就停止查找。左边完成后再向右进行同样的操作;最后把左右两边的记录合并起来,得到的数据就是该点横向上的棋型,然后把棋型的编号填入到Computerxyn中就行了(x、y代表坐标,n=0、1、2、3分别代表横、竖、左斜、右斜四个方向)。而其他三个方向的棋型也可用同样的方法得到,当搜索完整棋盘后,己方棋型表也就填写完毕了。

    5、然后再用同样的方法填写对方棋型表。注意:所有棋型的编号都要事先 定义好,越重要的号数越大! 1.6 对方下子有了上面填写的两棋型表,就是遍历棋型表Computer15154和Player15154找出其中数值最大的一点,在该点下子即可。但这种算法的弱点非常明显,只顾眼前利益,不能顾全大局,这就和许多五子棋初学者一样犯了“目光短浅”的毛病。 如果在这儿下子将会形成对手不得不防守的棋型(例如:冲四、活三);那么下一步对手就会照您的思路下子来防守您,如此一来便完成了第一步的预测。这时再调用模块4对预测后的棋进行盘面分析,如果出现了四三、双三或双四等制胜点,那么己方就可以获胜了(当然对黑棋而言双三、双

    6、四是禁手,另当别论);否则照同样的方法向下分析,就可预测出第二步、第三步等一等,要是盘面上没有对手必须防的棋型,哪该怎么办呢?进攻不成的话就得考虑防守了,将自己和对手调换一下位置,然后用上面的方法来预测对手的棋,这样既可以防住对手巧妙的攻击,又能待机发动反击,何乐而不为呢!1.7 胜负判断务须多言,某方形成五子连即获胜;若黑棋走出双三、双四或长连即以禁手判负。第二章 功能描述2.1 功能模块图图2.1 功能模块图2.2 功能说明该五子棋程序基本上实现了五子棋的游戏功能,有双方下棋的界面及最终判定结果的界面。同时该游戏采用二维坐标实现,明了易懂,方便玩家在游戏过程中的基本操作,使游戏更加简便。在

    7、细节方面,该系统提供实时存储功能,随时记录为完成的游戏,使用户可以很好的处理意外中断的情况。该游戏基本实现了游戏的一些要求和特征。在游戏的源程序及文档方面,我们也严格遵守软件工程思想,立足实验要求,确定任务,需求分析,设计和编码,每个步骤力求清晰易懂。原代码注释详尽,各功能模块功能分明,可移植性强。当然该系统也有很多不足的地方,第一次进行独立的课程设计,也有很多细节方面是考虑到的,这款游戏也是在不断的调试和修改中产生和完善的。希望老师能够指出不足,帮助我不断提高。 第三章 系统设计3.1 流程图图3.1 流程图3.2 流程图说明本程序定义了各种操作函数、各种状态判定宏,思想明确,思路清晰。各个

    8、判断选择了不同路径,因此继续进行或输出结果。程序中,“循环”的利用非常直接和清晰,双方交替下棋,因此循环往复。最终决出胜负或最终平局。分析时,也考虑了许多种情况,针对各个情况均作出了相对措施和解决方案。程序采用循环进行双方交替下棋,并进行了很多判断。首先判断棋盘是否已满,若棋盘已满,则输出平局,结束游戏;若棋盘未满,则继续进行。然后判断“0”方是否胜出,若“0”方获胜,则输出“0”方获胜,结束游戏;若“0”方没有获胜,则继续进行。再判断“x”方是否获胜,若“x”方获胜,则输出“x”方获胜,结束游戏;若“x”方没有获胜,则继续进行。回到“首先”的判断。如此循环第四章 运行结果图4.1 运行结果初

    9、始图图4.2 游戏过程图图4.3 游戏进行图图4.4 “0”方获胜图第五章 总结第六章 致附录一 参考文献1严蔚敏,吴伟民.数据结构.:清华大学,2010年2仕华,韦巍,王敬生,燕君.数据结构课程设计(第二版).:机械工业,2010年3谭浩强.C程序设计(第二版).:清华大学,1999年4谭浩强.C+程序设计.:清华大学,2009年附录二 源代码#include using namespace std; int Hsheng(char a15);/判断o子是否获胜的函数 int Bsheng(char a15);/判断x子是否获胜的函数 int he(char a15);/判断是否平局(也就是

    10、棋盘下满了)的函数 void qipan(char a1515)/执行输出棋盘命令 cout本游戏采用二维数组实现,棋盘为15X15的二维直角坐标系,均从1到15,祝二位游戏愉快.; for(int i=0;i15;i+)/打印棋盘 for(int j=0;j15;j+) coutaij; coutendl; int main() char a1515; int x,y; for(int i=0;i15;i+) for(int j=0;j15;j+) aij= ; qipan(a); while(1)/用循环语句执行o,x交替下子,这些while语句看起来似乎是个死循环实际上都会经过break

    11、结束 int a1=1; while(1) for(;a1;) coutxy; if(axy=o|axy=x)/判断是否已有子 cout已有子请重下=15|y=15)cout输入错误请重输,;continue; else axy=o; a1=0; break; qipan(a);/下好o子后将棋盘显示 if(Hsheng(a)/判断o子是否已经获胜 couto子获胜endl; break; while(1)/下x子 coutxy; if(axy=o|axy=x|x=15|y=15) for( ; axy=o|axy=x; ) cout已有子请重下; coutxy;continue; for (

    12、 ; x=15|y=15|x; ) cout输入错误请重输,; /判断输入棋子位置是否正确 coutxy;continue ; axy=x;break; else axy=x; break; qipan(a);/再一次输出棋盘 if(Bsheng(a)/判断x子是否已经获胜 coutx子获胜endl; break; if(he(a)/判断是否平局 cout平局endl; break; return 0; int Hsheng(char a15) int i,j;/判断横着的5个是否都相等 for(i=0;i15;i+) for(j=0;j15;j+) if(aij=o&aij+1=o&aij+

    13、2=o&aij+3=o&aij+4=o) return 1; for(j=0;j15;j+)/判断竖着的5个是否都相等 for(i=0;i15;i+) if(aij=o&ai+1j=o&ai+2j=o&ai+3j=o&ai+4j=o) return 1; for(i=0;i15;i+)/判断左斜5个 for(j=0;j15;j+) if(aij=o&ai+1j+1=o&ai+2j+2=o&ai+3j+3=o&ai+4j+4=o) return 1; for(i=0;i3;j-) if(aij=H&ai+1j-1=o&ai+2j-2=o&ai+3j-3=o&ai+4j-4=o) return 1

    14、; return 0; int Bsheng(char a15)/同o,只是改字符 int i,j; for(i=0;i15;i+) for(j=0;j15;j+) if(aij=x&aij+1=x&aij+2=x&aij+3=x&aij+4=x) return 1; for(j=0;j15;j+) for(i=0;i15;i+) if(aij=x&ai+1j=x&ai+2j=x&ai+3j=x&ai+4j=x) return 1; for(i=0;i15;i+) for(j=0;j15;j+) if(aij=x&ai+1j+1=x&ai+2j+2=x&ai+3j+3=x&ai+4j+4=x) return 1; for(i=0;i3;j-) if(aij=x&ai+1j-1=x&ai+2j-2=x&ai+3j-3=x&ai+4j-4=x) return 1; return 0; int he(char a15) for(int i=0;i15;i+) for(int j=0;j15;j+) if(aij= )/当棋盘全部子都不是 时才能return 1,即棋盘已下满 return 0; return 1;


    注意事项

    本文(五子棋游戏课程设计报告含源代码可以运行.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开